diff --git a/SRIP/Codes/Code_Documentation.md b/SRIP/Codes/Code_Documentation.md new file mode 100644 index 00000000..c2437b59 --- /dev/null +++ b/SRIP/Codes/Code_Documentation.md @@ -0,0 +1,34 @@ +# Code Documentation + +## Introduction + +This document captures the experiment implementation details. + +## Code Details + +1. **File name:** simLayout.html + **File description:** Contains the layout of the circuit simulator. + +2. **File name:** layout.css + **File description:** Contains the css of the simulator. + +3. **File name:** simulatorOptions.js + **File description:** Contains the jquery to enable the different options contained in the main simulator file. + +4. **File name:** circuitCheck.js + **File description:** Contains the functions necessary to check if the circuit made on the simulator is correct and if all the connections and components are correct. + + * **Function name:** circCheck() + **Function description:** This retreives the circuit data and checks if it is the same as a preset circuit data. + + * **Function name:** isEqual() + **Function description:** This checks if two objects are equal. + +5. **File name:** Procedure.html + **File description:** Contains the procedure to run each simualtion. + +6. **File name:** project_doc.html + **File description:** Contains the theory behind the experiment. + +7. **File name:** project_doc_style.html + **File description:** Contains the css for the project_doc.html. \ No newline at end of file diff --git a/SRIP/Codes/Experiment_Project_Documentation.md b/SRIP/Codes/Experiment_Project_Documentation.md new file mode 100644 index 00000000..06c08b34 --- /dev/null +++ b/SRIP/Codes/Experiment_Project_Documentation.md @@ -0,0 +1,71 @@ +# Experiment Project Documentation + +## Introduction + +This document captures the technical details related to the experiment development. + +## Project +**Domain name:** Computer Science & Engineering. +**Lab name:** Very Large Scale Integration. +**Experiment name:** Schematic Design Of Transistor Level XOR and XNOR gate. + +Pass transistor logic (PTL) describes several logic families used in the design of integrated circuits. It reduces the count of transistors used to make different logic gates, by eliminating redundant transistors. Transistors are used as switches to pass logic levels between nodes of a circuit, instead of as switches connected directly to supply voltages. + +This reduces the number of active devices, but has the disadvantage that the difference of the voltage between high and low logic levels decreases at each stage. Each transistor in series is less saturated at its output than at its input. + +This experiment is used to simulate the working of an XOR and XNOR gate using pass transistor logic. A graph is generated which shows the output of the simulation. + +## Purpose of the Project + +The purpose of this project is to convert XOR and XNOR gate simulation from Java to Javascript. + +## Project Developers Details + +| Sl.no | Name | Year Of Study | Role | Email-ID | Github handle | +|:-----:|:-----------------:|:-------------:|:---------:|:---------------------------:|:-------------:| +| 1 | Utkarsh Chhapekar | 2nd year | Developer | utkarshchhapekar2@gmail.com | Utkichaps | + +## Technologies and Libraries + +**Technologies:** +1. HTML +2. CSS +3. Javascript + +**Libraries:** +1. SimCir JS +2. JQuery +3. Bootstrap + +## Development Environment + +**OS:** Ubuntu 19.04 + +## Documents and Files: + +| Sl.no | Document | Role | +|:-----:|:------------------:|:------------------------------------------------------------------------------:| +| 1. | Procedure | This document captures the instructions to run the simulations | +| 2. | Test Cases | This document captures the functional test cases of the experiment simulation | +| 3. | Code Documentation | This document captures the details related to code | +| Sl.no | File | Role | +| 1. | Codes | Contains the major code as well as the images related to it. | +| 2. | Libraries | Contains libraries used by the code | + +## Process Followed to convert the experiment + +1. Understand the assigned experiment Java simulation. +2. Understanding the experiment concept. +3. Re-implement the same in javascript. + +## Value Added by our Project + +It is beneficial to engineering students who want to understand how pass transistor logic can be used to simulate universal gates and to understand the theory behind it as well. + +## Risks and Challenges + +A few challenges faced during the development process was understanding the simcir library so that it can be used to retrieve the circuit data dynamically. Adding components was also an issue. + +## Issues + +No current issues open. diff --git a/SRIP/Codes/Experiment_Test_Cases_Documentation.md b/SRIP/Codes/Experiment_Test_Cases_Documentation.md new file mode 100644 index 00000000..525e79d8 --- /dev/null +++ b/SRIP/Codes/Experiment_Test_Cases_Documentation.md @@ -0,0 +1,22 @@ +# Experiment Test Cases Documentation + +## Introduction + +This document captures the test cases of the experiment. + +## Functional Test Cases + +| Test Case id | Test Scenario | Test Steps | Expected Output | Actual Output | Result | +|:------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------:| +| 1. | Press Simulate button without selecting what type of simulation | Directly click on simulate without selecting the type of simulation. | Alert: Please select type of simulation | Alert: Please select type of simulation | pass | +| 2. | Press Simulate button with mismatched circuit and simulation option. | Choose a simulation and make a circuit which is not the same as the simulation option. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | +| 3. | Alert when the connections/components are wrong. | Make an incorrect circuit and try to simulate it. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | +| 4. | Graph should get cleared after simulating a wrong circuit. | Simulate a correct circuit and then simulate a wrong circuit | The graph of the previous simulation should not show. | The graph of the previous simulation should not show. | pass | + +## Cross Browser Testing + +| Sl.no | Browser | Version | Works? | +|-------|-----------------|---------------|--------| +| 1. | Google Chrome | 75.0.3770.100 | Yes | +| 2. | Mozilla Firefox | 67.0.4 | yes | + diff --git a/SRIP/Codes/Images/XNOR.png b/SRIP/Codes/Images/XNOR.png new file mode 100644 index 00000000..3e401eeb Binary files /dev/null and b/SRIP/Codes/Images/XNOR.png differ diff --git a/SRIP/Codes/Images/XOR.png b/SRIP/Codes/Images/XOR.png new file mode 100644 index 00000000..ee91cd8a Binary files /dev/null and b/SRIP/Codes/Images/XOR.png differ diff --git a/SRIP/Codes/Images/blank.png b/SRIP/Codes/Images/blank.png new file mode 100644 index 00000000..5d5112e4 Binary files /dev/null and b/SRIP/Codes/Images/blank.png differ diff --git a/SRIP/Codes/Images/full.png b/SRIP/Codes/Images/full.png new file mode 100644 index 00000000..5fe4604e Binary files /dev/null and b/SRIP/Codes/Images/full.png differ diff --git a/SRIP/Codes/Images/kmap.png b/SRIP/Codes/Images/kmap.png new file mode 100644 index 00000000..9d959444 Binary files /dev/null and b/SRIP/Codes/Images/kmap.png differ diff --git a/SRIP/Codes/Images/label.png b/SRIP/Codes/Images/label.png new file mode 100644 index 00000000..5248f877 Binary files /dev/null and b/SRIP/Codes/Images/label.png differ diff --git a/SRIP/Codes/Images/nswitches.png b/SRIP/Codes/Images/nswitches.png new file mode 100644 index 00000000..f28a1751 Binary files /dev/null and b/SRIP/Codes/Images/nswitches.png differ diff --git a/SRIP/Codes/Images/pswitches.png b/SRIP/Codes/Images/pswitches.png new file mode 100644 index 00000000..d5da27d7 Binary files /dev/null and b/SRIP/Codes/Images/pswitches.png differ diff --git a/SRIP/Codes/Images/xnor.png b/SRIP/Codes/Images/xnor.png new file mode 100644 index 00000000..9f2332ae Binary files /dev/null and b/SRIP/Codes/Images/xnor.png differ diff --git a/SRIP/Codes/Images/xnortruth.png b/SRIP/Codes/Images/xnortruth.png new file mode 100644 index 00000000..0ef3e58c Binary files /dev/null and b/SRIP/Codes/Images/xnortruth.png differ diff --git a/SRIP/Codes/Images/xor.png b/SRIP/Codes/Images/xor.png new file mode 100644 index 00000000..7cb240dc Binary files /dev/null and b/SRIP/Codes/Images/xor.png differ diff --git a/SRIP/Codes/Images/xortruth.png b/SRIP/Codes/Images/xortruth.png new file mode 100644 index 00000000..cf10d78f Binary files /dev/null and b/SRIP/Codes/Images/xortruth.png differ diff --git a/SRIP/Codes/Procedure.html b/SRIP/Codes/Procedure.html new file mode 100644 index 00000000..51747da8 --- /dev/null +++ b/SRIP/Codes/Procedure.html @@ -0,0 +1,122 @@ + + + + Procedure + + + + +
+

Procedure

+ +
+
+ +

Components which will be used for this:PMOS, NMOS, Input, Output, Vdd, GND, Capacitor, Joint, OJoint.


+ Steps (Can also refer to the diagram below): +
+
    +
  1. Select XOR Gate from the option on the top of the page, under the heading.
  2. +
  3. Connect two pairs of PMOS (4 in total) in parallel and connect that in series between Vdd and 3 input OR. To do that:
  4. + +
  5. Connect two pairs of NMOS (4 in total) in series and connect that in parallel between 3 input OR and GND. To do that:
  6. + +
  7. Connect the GND to the Input of a capacitor.
  8. +
  9. Connect the output of the capacitor to the third input of the 3 input OR.
  10. +
  11. Connect the output of the 3 input OR to an Out component.
  12. +
  13. For the inputs, put 4 In components on the workspace.
  14. +
  15. Each In component should be connected to one PMOS and one NMOS. For this, follow the diagram given above.
  16. +
+
+
+ +

Components which will be used for this:PMOS, NMOS, Input, Output, Vdd, GND, Capacitor, Joint, OJoint.


+ Steps (Can also refer to the diagram below): +
+
    +
  1. Select XOR Gate from the option on the top of the page, under the heading.
  2. +
  3. Connect two pairs of PMOS (4 in total) in parallel and connect that in series between Vdd and 3 input OR. To do that:
  4. + +
  5. Connect two pairs of NMOS (4 in total) in series and connect that in parallel between 3 input OR and GND. To do that:
  6. + +
  7. Connect the GND to the Input of a capacitor.
  8. +
  9. Connect the output of the capacitor to the third input of the 3 input OR.
  10. +
  11. Connect the output of the 3 input OR to an Out component.
  12. +
  13. For the inputs, put 4 In components on the workspace.
  14. +
  15. Each In component should be connected to one PMOS and one NMOS. For this, follow the diagram given above.
  16. +
+ +
+ + + + \ No newline at end of file diff --git a/SRIP/Codes/Procedure_Documentation.md b/SRIP/Codes/Procedure_Documentation.md new file mode 100644 index 00000000..719484aa --- /dev/null +++ b/SRIP/Codes/Procedure_Documentation.md @@ -0,0 +1,21 @@ +# Project Documentation + +## Introduction + +This document captures the instructions to run the simulation. + +## Instructions: + +1. Click on the simLayout.html file to see the simulator. + +2. Choose what you want to simulate under the _Select the simulation_ heading. + +3. Now you can either see the circuit for NAND and NOR under the _See Circuit:_ heading or follow the procedure to design it. + +4. Clicking on the procedure tab will open a procedure window on the right. Click on the _Select the circuit_ heading to see the procedure for each circuit. + +5. Click on the _Simulator Help_ heading to see instructions on how to use the simulator. + +6. Once your circuit is done, click on the _Simulate_ button to observe the graph to the right of the workspace. + +7. To read the theory behind the experiment click on the _Project Documentation_ heading. \ No newline at end of file diff --git a/SRIP/Codes/Readme.txt b/SRIP/Codes/Readme.txt new file mode 100644 index 00000000..d6111375 --- /dev/null +++ b/SRIP/Codes/Readme.txt @@ -0,0 +1,19 @@ +SRIP + +VLSI | issue no 380 | Design Of Transistor Level XOR & XNOR Gate + +--------------------------------------------------------------------- + +Simulator: +The simulator can be accessed by clicking on the simLayout.html file. +The Project documentation is in the project_doc.html file. + +Files used by the simulator: +simLayout.html +Procedure.html +layout.css +simulatorOptions.js +circuitCheck.js + + + diff --git a/SRIP/Codes/circuitCheck.js b/SRIP/Codes/circuitCheck.js new file mode 100644 index 00000000..b6cab748 --- /dev/null +++ b/SRIP/Codes/circuitCheck.js @@ -0,0 +1,159 @@ +function circCheck() +{ + //console.log(JSON.stringify(dataFinal.devices)); + //console.log(JSON.stringify(dataFinal.connectors)); + /*global dataFinal*/ + var dev = dataFinal.devices; + /*global dataFinal*/ + var con = dataFinal.connectors; + //console.log(dev.length); + //console.log(con.length); + //console.log(document.getElementById("whichSim").value); + var opt = document.getElementById("whichSim").value; + var devic = new Object(); + var connec = new Object(); + connec = {}; + devic = {}; + //Main parsing done here: + for(var i = 0;i + + + Documentation + + + +

Schematic Design Of Transistor Level XOR & XNOR Gate.

+ +

Introduction

+ + XOR(exclusive OR):
+ For a 2 input XOR, the output of the gate is low when both the inputs are same(either both low or both high). The output is
+ high if one and only one of the inputs is high. The function is addition modulo 2 and hence the gate is used in half adder
+ + The schematic and truth table for 2 input A and B for XOR gate :-
+ +
+ + XNOR(exclusive NOR):
+ For a 2 input XNOR, the output of the gate is high when both the inputs are same(either both low or both high). The output is
+ low if one and only one of the inputs is high.
+ + The schematic and truth table for 2 input A and B for XOR gate :-
+
+ +

Theory

+ + We now move towards desining transistor level schematic for any given combinational logic. This is done by analysing the kmap
+ of the given combination for p- and n-switches and then deducing the required series or parallel combination. The following
+ example will give you an idea about how to go for designing a combinational logic using transistors. We want to design
+ transistor level schematic of (AB+CD)'.
+ + +

Implementation for N-Switches:

+ +
+ The series combination of A and B is in parallel with the series combination of C and D. + +

Implementation for P-Switches:

+ +
+ The parallel combination of A and B is in series with the parallel combination of C and D.
+ +

Complete design:

+ +
+ + XOR: + A ⊕ B = AB' + A'B + A' is analogous to C and B' is analogous to D. If implementation is done according to the example described above we would require
+ 5 NMOS and 5 PMOS.
+ 4 NMOS and PMOS for implementation of complement of AB'+A'B + and 1 pair for the inverter.
+ Now,think of a method to reduce the number of transistor. 1 pair needed for inverting can be reduced if XOR is implemented as the complement of XNOR.
+ + XNOR: + (A ⊕ B)' in the similar way xnor if implemented as complement of A ⊕ B rather than AB+A'B' would require 4 NMOS and PMOS.
+ In that case A would be analogous to A' and vice versa in the XOR example.
+ + + + + \ No newline at end of file diff --git a/SRIP/Codes/project_doc_style.css b/SRIP/Codes/project_doc_style.css new file mode 100644 index 00000000..945bf096 --- /dev/null +++ b/SRIP/Codes/project_doc_style.css @@ -0,0 +1,23 @@ +body { + text-align: center; + background-color: cornsilk; +} + +p { + font-family: sans-serif; +} + +h1 { + font-size: 3.5em; + background-color: burlywood; +} + +h2 { + background-color: wheat; + font-size: 2em; +} + +h3 { + background-color: blanchedalmond; + font-family: monospace; +} \ No newline at end of file diff --git a/SRIP/Codes/simLayout.html b/SRIP/Codes/simLayout.html new file mode 100644 index 00000000..f2c203c9 --- /dev/null +++ b/SRIP/Codes/simLayout.html @@ -0,0 +1,129 @@ + + + + + + Simulator + + + + + + + + + + + + + + + +
+

Simulator

+

+ +

+ +
+
+
+ + +
+
+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/SRIP/Codes/simulatorOptions.js b/SRIP/Codes/simulatorOptions.js new file mode 100644 index 00000000..e17c18d8 --- /dev/null +++ b/SRIP/Codes/simulatorOptions.js @@ -0,0 +1,226 @@ +if(sessionStorage.getItem("MUX")) +{ + var val = sessionStorage.getItem("MUX"); + var opti = $("#whichSim option[value=\'" + val + "\']").text(); + $("#whichSim").append(""); +} +if(sessionStorage.getItem("PPT")) +{ + var dfl = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":224,"y":72,"label":"PMOS"}, + {"type":"PMOS","id":"dev1","x":424,"y":72,"label":"PMOS"}, + {"type":"PMOS","id":"dev2","x":424,"y":168,"label":"PMOS"}, + {"type":"PMOS","id":"dev3","x":224,"y":168,"label":"PMOS"}, + {"type":"Joint","id":"dev4","x":328,"y":72,"label":"Joint","state":{"direction":0}}, + {"type":"OJoint","id":"dev5","x":328,"y":104,"label":"OJoint","state":{"direction":0}}, + {"type":"Joint","id":"dev6","x":344,"y":168,"label":"Joint","state":{"direction":0}}, + {"type":"OJoint","id":"dev7","x":328,"y":200,"label":"OJoint","state":{"direction":0}}, + {"type":"NMOS","id":"dev8","x":232,"y":312,"label":"NMOS"}, + {"type":"NMOS","id":"dev9","x":424,"y":312,"label":"NMOS"}, + {"type":"DC","label":"Vdd","id":"dev10","x":296,"y":8}, + {"type":"NMOS","id":"dev11","x":232,"y":408,"label":"NMOS"}, + {"type":"NMOS","id":"dev12","x":424,"y":408,"label":"NMOS"}, + {"type":"OJoint","id":"dev13","x":224,"y":376,"label":"OJoint","state":{"direction":1}}, + {"type":"OJoint","id":"dev14","x":416,"y":376,"label":"OJoint","state":{"direction":1}}, + {"type":"OJoint","id":"dev15","x":336,"y":272,"label":"OJoint","state":{"direction":2}}, + {"type":"Joint","id":"dev16","x":336,"y":440,"label":"Joint","state":{"direction":2}}, + {"type":"GND","id":"dev17","x":320,"y":472,"label":"GND"}, + {"type":"In","id":"dev18","x":32,"y":120,"label":"a"}, + {"type":"In","id":"dev19","x":32,"y":208,"label":"a'"}, + {"type":"In","id":"dev20","x":32,"y":304,"label":"b"}, + {"type":"In","id":"dev21","x":32,"y":400,"label":"b'"}, + {"type":"CAP","label":"Capacitor","id":"dev22","x":488,"y":472}, + {"type":"OR","numInputs":3,"id":"dev23","x":520,"y":264,"label":"OR"}, + {"type":"Out","id":"dev24","x":576,"y":264,"label":"Out"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev4.out0"}, + {"from":"dev0.in1","to":"dev18.out0"}, + {"from":"dev0.in2","to":"dev5.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev21.out0"}, + {"from":"dev1.in2","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev2.in1","to":"dev20.out0"}, + {"from":"dev2.in2","to":"dev7.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev3.in1","to":"dev19.out0"}, + {"from":"dev3.in2","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev10.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev15.out0"}, + {"from":"dev8.in1","to":"dev18.out0"}, + {"from":"dev8.in2","to":"dev13.out0"}, + {"from":"dev9.in0","to":"dev15.out0"}, + {"from":"dev9.in1","to":"dev19.out0"}, + {"from":"dev9.in2","to":"dev14.out0"}, + {"from":"dev11.in0","to":"dev13.out0"}, + {"from":"dev11.in1","to":"dev21.out0"}, + {"from":"dev11.in2","to":"dev16.out0"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev12.in1","to":"dev20.out0"}, + {"from":"dev12.in2","to":"dev16.out0"}, + {"from":"dev16.in0","to":"dev17.out0"}, + {"from":"dev22.in0","to":"dev17.out0"}, + {"from":"dev23.in0","to":"dev7.out0"}, + {"from":"dev23.in1","to":"dev15.out0"}, + {"from":"dev23.in2","to":"dev22.out0"}, + {"from":"dev24.in0","to":"dev23.out0"} + ] +}; + var html1=JSON.stringify(dfl); + document.querySelector(".simcir").innerHTML=html1; +} +else if(sessionStorage.getItem("NPT")) +{ + var dfli = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":216,"y":72,"label":"PMOS"}, + {"type":"PMOS","id":"dev1","x":416,"y":72,"label":"PMOS"}, + {"type":"PMOS","id":"dev2","x":416,"y":168,"label":"PMOS"}, + {"type":"PMOS","id":"dev3","x":216,"y":168,"label":"PMOS"}, + {"type":"Joint","id":"dev4","x":320,"y":72,"label":"Joint","state":{"direction":0}}, + {"type":"OJoint","id":"dev5","x":320,"y":104,"label":"OJoint","state":{"direction":0}}, + {"type":"Joint","id":"dev6","x":336,"y":168,"label":"Joint","state":{"direction":0}}, + {"type":"OR","numInputs":3,"id":"dev7","x":504,"y":264,"label":"OR"}, + {"type":"OJoint","id":"dev8","x":320,"y":200,"label":"OJoint","state":{"direction":0}}, + {"type":"NMOS","id":"dev9","x":224,"y":312,"label":"NMOS"}, + {"type":"NMOS","id":"dev10","x":416,"y":312,"label":"NMOS"}, + {"type":"DC","label":"Vdd","id":"dev11","x":288,"y":8}, + {"type":"NMOS","id":"dev12","x":224,"y":408,"label":"NMOS"}, + {"type":"NMOS","id":"dev13","x":416,"y":408,"label":"NMOS"}, + {"type":"OJoint","id":"dev14","x":216,"y":376,"label":"OJoint","state":{"direction":1}}, + {"type":"OJoint","id":"dev15","x":408,"y":376,"label":"OJoint","state":{"direction":1}}, + {"type":"OJoint","id":"dev16","x":328,"y":272,"label":"OJoint","state":{"direction":2}}, + {"type":"Joint","id":"dev17","x":328,"y":440,"label":"Joint","state":{"direction":2}}, + {"type":"CAP","label":"Capacitor","id":"dev18","x":472,"y":472}, + {"type":"GND","id":"dev19","x":312,"y":472,"label":"GND"}, + {"type":"In","id":"dev20","x":24,"y":120,"label":"a"}, + {"type":"In","id":"dev21","x":24,"y":208,"label":"a'"}, + {"type":"In","id":"dev22","x":24,"y":304,"label":"b"}, + {"type":"In","id":"dev23","x":24,"y":400,"label":"b'"}, + {"type":"Out","id":"dev24","x":568,"y":264,"label":"Out"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev4.out0"}, + {"from":"dev0.in1","to":"dev21.out0"}, + {"from":"dev0.in2","to":"dev5.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev23.out0"}, + {"from":"dev1.in2","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev2.in1","to":"dev22.out0"}, + {"from":"dev2.in2","to":"dev8.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev3.in1","to":"dev20.out0"}, + {"from":"dev3.in2","to":"dev8.out0"}, + {"from":"dev4.in0","to":"dev11.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev7.in0","to":"dev8.out0"}, + {"from":"dev7.in1","to":"dev16.out0"}, + {"from":"dev7.in2","to":"dev18.out0"}, + {"from":"dev9.in0","to":"dev16.out0"}, + {"from":"dev9.in1","to":"dev21.out0"}, + {"from":"dev9.in2","to":"dev14.out0"}, + {"from":"dev10.in0","to":"dev16.out0"}, + {"from":"dev10.in1","to":"dev20.out0"}, + {"from":"dev10.in2","to":"dev15.out0"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev12.in1","to":"dev23.out0"}, + {"from":"dev12.in2","to":"dev17.out0"}, + {"from":"dev13.in0","to":"dev15.out0"}, + {"from":"dev13.in1","to":"dev22.out0"}, + {"from":"dev13.in2","to":"dev17.out0"}, + {"from":"dev17.in0","to":"dev19.out0"}, + {"from":"dev18.in0","to":"dev19.out0"}, + {"from":"dev24.in0","to":"dev7.out0"} + ] +}; + var html2=JSON.stringify(dfli); + document.querySelector(".simcir").innerHTML=html2; + +} +else +{ + var obj = {}; + obj = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ] + + }; + + var html=JSON.stringify(obj); + document.querySelector(".simcir").innerHTML=html; +} + +$("#procedure").click(function() { + $("#proc").toggle(); +}); + +$("#dfli").click(function(event) { + sessionStorage.setItem("PPT",1); + sessionStorage.removeItem("NPT"); + location.reload(); +}); + +$("#dfl").click(function(event) { + sessionStorage.setItem("NPT",1); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#clear").click(function(event) { + sessionStorage.removeItem("NPT"); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#whichSim").change(function(event) { + var opt = document.getElementById("whichSim").value; + sessionStorage.setItem("MUX",opt); + location.reload(); +}); \ No newline at end of file diff --git a/SRIP/Libraries/Bootstrap/bootstrap.bundle.min.js b/SRIP/Libraries/Bootstrap/bootstrap.bundle.min.js new file mode 100644 index 00000000..43203684 --- /dev/null +++ b/SRIP/Libraries/Bootstrap/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),h=0l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)r(o.top)||"bottom"===_&&r(i.top)r(g.right),c=r(i.top)r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:''}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||tcode{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/SRIP/Libraries/Readme.txt b/SRIP/Libraries/Readme.txt new file mode 100644 index 00000000..964c4cb9 --- /dev/null +++ b/SRIP/Libraries/Readme.txt @@ -0,0 +1,5 @@ +Libraries used: + +Jquery +SimCir JS +Bootstrap diff --git a/SRIP/Libraries/jquery-3.4.1.min.js b/SRIP/Libraries/jquery-3.4.1.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/SRIP/Libraries/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + simcirjs + + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/SRIP/Libraries/simcirjs/LICENSE b/SRIP/Libraries/simcirjs/LICENSE new file mode 100644 index 00000000..fba3333e --- /dev/null +++ b/SRIP/Libraries/simcirjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 Kazuhiko Arase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SRIP/Libraries/simcirjs/README.txt b/SRIP/Libraries/simcirjs/README.txt new file mode 100644 index 00000000..ce11a166 --- /dev/null +++ b/SRIP/Libraries/simcirjs/README.txt @@ -0,0 +1,9 @@ +SimcirJS + +Copyright (c) 2014 Kazuhiko Arase + +URL: http://www.d-project.com/ + +Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + diff --git a/SRIP/Libraries/simcirjs/misc/simcir-altfulladder.js b/SRIP/Libraries/simcirjs/misc/simcir-altfulladder.js new file mode 100644 index 00000000..1cb8d588 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir-altfulladder.js @@ -0,0 +1,57 @@ +// +// SimcirJS - altfulladder +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// This file describes how to customize the layout of library. +// + +// includes following device types: +// AltFullAdder + +simcir.registerDevice('AltFullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "layout":{"rows":8,"cols":8,"hideLabelOnWorkspace":true, + "nodes":{"A":"T2","B":"T6","S":"B4","Cin":"R4","Cout":"L4"}}, + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); diff --git a/SRIP/Libraries/simcirjs/misc/simcir-delay.js b/SRIP/Libraries/simcirjs/misc/simcir-delay.js new file mode 100644 index 00000000..02747e33 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir-delay.js @@ -0,0 +1,224 @@ +// +// SimcirJS - Delay +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Delay + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1, delay) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + var value = in1.getValue(); + window.setTimeout(function() { out1.setValue(value); }, delay); + } + }; + }; + + var createDelayFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var defaultDelay = 50; + var defaultDelayColor = '#ff0000'; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var delay = Math.max(0, device.deviceDef.delay || defaultDelay); + var color = device.deviceDef.color || defaultDelayColor; + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1, delay); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector').css('stroke', color); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + labelless: true, + params: [ + {name: 'delay', type: 'number', + defaultValue: defaultDelay, + description: 'time delay in milli-seconds.'}, + {name: 'color', type: 'string', + defaultValue: defaultDelayColor, + description: 'color in hexadecimal.'}], + code: '{"type":"' + device.deviceDef.type + '","delay":50}' + }; + }; + }; + }; + + $s.registerDevice('Delay', createDelayFactory() ); + +}(simcir); diff --git a/SRIP/Libraries/simcirjs/misc/simcir-dso.js b/SRIP/Libraries/simcirjs/misc/simcir-dso.js new file mode 100644 index 00000000..97b1d0f0 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir-dso.js @@ -0,0 +1,406 @@ +// +// SimcirJS - DSO +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DSO + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createDSOFactory = function() { + + var colors = [ + '#ff00cc', + '#ffcc00', + '#ccff00', + '#00ffcc', + '#00ccff', + '#cc00ff' + ]; + var timeRanges = [10000, 5000, 2000, 1000]; + var maxTimeRange = timeRanges[0]; + + var createProbe = function(color) { + + var samples = []; + + var model = { + valueRange : 1, + timeRange : maxTimeRange + }; + + var $path = $s.createSVGElement('path'). + css('fill', 'none'). + css('stroke-width', 1). + css('stroke-linejoin', 'bevel'). + css('stroke', color); + + var setValueRange = function(valueRange) { + model.valueRange = valueRange; + }; + + var setTimeRange = function(timeRange) { + model.timeRange = timeRange; + }; + + var update = function(ts, x, y, width, height) { + var d = ''; + for (var i = samples.length - 1; i >= 0; i -= 1) { + var last = i - 1 >= 0 && ts - samples[i - 1].ts > model.timeRange; + var val = samples[i].value; + if (!last && i > 0 && i + 1 < samples.length && + samples[i - 1].value === val && + samples[i + 1].value === val) { + continue; + } + if (typeof val != 'number') { + val = 0; + } + var sx = x + width - (ts - samples[i].ts) / model.timeRange * width; + var sy = y + height - val / model.valueRange * height; + d += d == ''? 'M' : 'L'; + d += sx + ' ' + sy; + if (last) { + break; + } + } + $path.attr('d', d); + }; + + var sample = function(ts, value) { + samples.push({ts: ts, value: value}); + while (ts - samples[0].ts > maxTimeRange) { + samples.shift(); + } + }; + + return { + $ui : $path, + setValueRange : setValueRange, + setTimeRange : setTimeRange, + update : update, + sample : sample + }; + }; + + var createPanel = function() { + + var $lcd = $s.createSVGElement('path'). + css('stroke', 'none').css('fill', '#ffcc00'); + var setLCDText = function(text) { + $lcd.attr('d', createFontPath(text, 4, 4, 1) ); + }; + var $lcdPanel = $s.createSVGElement('g'). + append($s.createSVGElement('rect'). + css('stroke', 'none'). + css('fill', '#000000'). + //size of time range window + attr({x : 0, y : 0, width: unit * 7, height : unit}) ). + append($lcd). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('timeRangeDown'); + }); + $s.transform($lcdPanel, unit * 1.5, 0); + + var $playing = $s.createSVGElement('path'). + attr('d', 'M' + unit / 4 + ' ' + unit / 4 + + 'L' + unit / 4 * 3 + ' ' + unit / 2 + + 'L' + unit / 4 + ' ' + unit / 4 * 3 + 'Z'). + css('stroke-width', 1); + var btnAttr = {x : 0, y : 0, width : unit, height : unit, + rx : 1, ry : 1}; + var $btnRect = $s.createSVGElement('rect'). + attr(btnAttr). + css('stroke', 'none'). + css('fill', '#999999'). + css('opacity', 0); + var $btn = $s.createSVGElement('g'). + append($btnRect). + append($s.createSVGElement('rect'). + attr(btnAttr). + css('stroke-width', 1). + css('stroke', '#666666'). + css('fill', 'none') ). + append($playing). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('playDown'); + }); + + var $panel = $s.createSVGElement('g'). + append($btn).append($lcdPanel); + + return { + $ui : $panel, + setPlaying : function(playing) { + $playing.css('fill', playing? '#00ff00' : '#006600'). + css('stroke', playing? '#00cc00' : '#003300'); + }, + setTimeRange : function(timeRange) { + var unit = 'ms'; + if (timeRange > 5000) { + unit = 's'; + timeRange /= 1000; + } + setLCDText('TimeRange:' + timeRange + unit); + } + }; + }; + + return function(device) { + + var numInputs = Math.max(1, + device.deviceDef.numInputs || 4); + var scale = 1; + var gap = 2; + + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + + var state = device.deviceDef.state || + { playing : true, rangeIndex : 0 }; + device.getState = function() { + return state; + }; + + //external body size + device.getSize = function() { + return { width : unit * 4, + height : unit * (numInputs * scale + 2) }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + //position of display + var $display = $s.createSVGElement('g'); + device.$ui.append($display); + $s.transform($display, unit / 2, unit / 2); + + //Inner LCD size + var $rect = $s.createSVGElement('rect'). + css('stroke', 'none').css('fill', '#000000'). + attr({x: 0, y: 0, width: unit * 3, + height: unit * numInputs * scale }); + $display.append($rect); + + var probes = []; + for (var i = 0; i < device.getInputs().length; i += 1) { + var inNode = device.getInputs()[i]; + $s.transform(inNode.$ui, 0, unit * + (0.5 + 0.5 * scale + i * scale) ); + var probe = createProbe(colors[i % colors.length]); + probes.push(probe); + $display.append(probe.$ui); + } + + var setTimeRange = function(timeRange) { + panel.setTimeRange(timeRange); + for (var i = 0; i < probes.length; i += 1) { + probes[i].setTimeRange(timeRange); + } + }; + + var panel = createPanel(); + panel.$ui.on('playDown', function(event){ + state.playing = !state.playing; + panel.setPlaying(state.playing); + }).on('timeRangeDown', function(event) { + state.rangeIndex = (state.rangeIndex + 1) % timeRanges.length; + setTimeRange(timeRanges[state.rangeIndex]); + }); + device.$ui.append(panel.$ui.css('display', 'none') ); + $s.transform(panel.$ui, unit / 2, + unit * numInputs * scale + unit / 4 * 3); + + panel.setPlaying(state.playing); + setTimeRange(timeRanges[state.rangeIndex] || timeRanges[0]); + + var alive = false; + var render = function(ts) { + for (var i = 0; i < device.getInputs().length; i += 1) { + probes[i].sample(ts, device.getInputs()[i].getValue() ); + if (state.playing) { + probes[i].update(ts, 0, unit * i * scale + gap, + unit * 15, unit * scale - gap * 2); + } + } + if (alive) { + window.requestAnimationFrame(render); + } + }; + + device.$ui.on('deviceAdd', function() { + + device.$ui.children('.simcir-device-body'). + attr('width', unit * 16); + device.$ui.children('.simcir-device-label'). + attr('x', unit * 8); + $rect.attr('width', unit * 15); + panel.$ui.css('display', ''); + + alive = true; + window.requestAnimationFrame(render); + + }).on('deviceRemove', function() { + alive = false; + }); + + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 4, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":4}' + }; + }; + }; + }; + + var createFontPath = function() { + var data = { + "\u0020":[0,0,0,0,0,0,0], + "!":[4,4,4,4,0,0,4], + "\"":[10,10,10,0,0,0,0], + "#":[10,10,31,10,31,10,10], + "$":[4,30,5,14,20,15,4], + "%":[3,19,8,4,2,25,24], + "&":[6,9,5,2,21,9,22], + "'":[6,4,2,0,0,0,0], + "(":[8,4,2,2,2,4,8], + ")":[2,4,8,8,8,4,2], + "*":[0,4,21,14,21,4,0], + "+":[0,4,4,31,4,4,0], + ",":[0,0,0,0,6,4,2], + "-":[0,0,0,31,0,0,0], + ".":[0,0,0,0,0,6,6], + "/":[0,16,8,4,2,1,0], + "0":[14,17,25,21,19,17,14], + "1":[4,6,4,4,4,4,14], + "2":[14,17,16,8,4,2,31], + "3":[31,8,4,8,16,17,14], + "4":[8,12,10,9,31,8,8], + "5":[31,1,15,16,16,17,14], + "6":[12,2,1,15,17,17,14], + "7":[31,16,8,4,2,2,2], + "8":[14,17,17,14,17,17,14], + "9":[14,17,17,30,16,8,6], + ":":[0,6,6,0,6,6,0], + ";":[0,6,6,0,6,4,2], + "<":[8,4,2,1,2,4,8], + "=":[0,0,31,0,31,0,0], + ">":[2,4,8,16,8,4,2], + "?":[14,17,16,8,4,0,4], + "@":[14,17,16,18,21,21,14], + "A":[14,17,17,17,31,17,17], + "B":[15,17,17,15,17,17,15], + "C":[14,17,1,1,1,17,14], + "D":[7,9,17,17,17,9,7], + "E":[31,1,1,15,1,1,31], + "F":[31,1,1,15,1,1,1], + "G":[14,17,1,29,17,17,14], + "H":[17,17,17,31,17,17,17], + "I":[14,4,4,4,4,4,14], + "J":[28,8,8,8,8,9,6], + "K":[17,9,5,3,5,9,17], + "L":[1,1,1,1,1,1,31], + "M":[17,27,21,21,17,17,17], + "N":[17,17,19,21,25,17,17], + "O":[14,17,17,17,17,17,14], + "P":[15,17,17,15,1,1,1], + "Q":[14,17,17,17,21,9,22], + "R":[15,17,17,15,5,9,17], + "S":[30,1,1,14,16,16,15], + "T":[31,4,4,4,4,4,4], + "U":[17,17,17,17,17,17,14], + "V":[17,17,17,17,17,10,4], + "W":[17,17,17,21,21,21,10], + "X":[17,17,10,4,10,17,17], + "Y":[17,17,17,10,4,4,4], + "Z":[31,16,8,4,2,1,31], + "[":[14,2,2,2,2,2,14], + "\\":[0,1,2,4,8,16,0], + "]":[14,8,8,8,8,8,14], + "^":[4,10,17,0,0,0,0], + "_":[0,0,0,0,0,0,31], + "`":[2,4,8,0,0,0,0], + "a":[0,0,14,16,30,17,30], + "b":[1,1,1,15,17,17,15], + "c":[0,0,30,1,1,1,30], + "d":[16,16,16,30,17,17,30], + "e":[0,0,14,17,31,1,30], + "f":[8,20,4,14,4,4,4], + "g":[0,0,30,17,30,16,15], + "h":[1,1,1,15,17,17,17], + "i":[0,4,0,4,4,4,4], + "j":[8,0,8,8,8,9,6], + "k":[2,2,18,10,6,10,18], + "l":[6,4,4,4,4,4,14], + "m":[0,0,27,21,21,21,17], + "n":[0,0,13,19,17,17,17], + "o":[0,0,14,17,17,17,14], + "p":[0,0,15,17,15,1,1], + "q":[0,0,30,17,30,16,16], + "r":[0,0,13,19,1,1,1], + "s":[0,0,30,1,14,16,15], + "t":[4,4,31,4,4,20,8], + "u":[0,0,17,17,17,17,14], + "v":[0,0,17,17,17,10,4], + "w":[0,0,17,17,21,21,10], + "x":[0,0,17,10,4,10,17], + "y":[0,0,17,10,4,4,2], + "z":[0,0,31,8,4,2,31], + "{":[12,2,2,1,2,2,12], + "|":[4,4,4,4,4,4,4], + "}":[6,8,8,16,8,8,6], + "~":[16,14,1,0,0,0,0] + }; + var getCharPath = function(c, x, y, s) { + var d = ''; + var cdata = data[c] || data['?']; + for (var cy = 0; cy < cdata.length; cy += 1) { + for (var cx = 0; cx < 5; cx += 1) { + if ( (cdata[cy] >> cx) & 1) { + d += 'M' + (x + cx) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy + 1) * s; + d += 'L' + (x + cx) * s + ' ' + (y + cy + 1) * s; + d += 'Z'; + } + } + } + return d; + }; + return function(s, x, y, scale) { + scale = scale || 1; + var d = ''; + for (var i = 0; i < s.length; i += 1) { + d += getCharPath(s.charAt(i), x + i * 6, y, scale); + } + return d; + }; + }(); + + $s.registerDevice('DSO', createDSOFactory() ); + +}(simcir); diff --git a/SRIP/Libraries/simcirjs/misc/simcir-num.js b/SRIP/Libraries/simcirjs/misc/simcir-num.js new file mode 100644 index 00000000..7b0f08f1 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir-num.js @@ -0,0 +1,328 @@ +// +// SimcirJS - Num +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// NumSrc +// NumDsp + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createNumLabel = function(size) { + var $label = $s.createSVGElement('g'). + css('pointer-events', 'none'). + attr('fill', 'none'). + attr('stroke-width', '2'); + $s.transform($label, size.width / 2, size.height / 2); + var lsize = Math.max(size.width, size.height); + var ratio = 0.65; + $s.controller($label, { + setOn : function(on) { + $label.children().remove(); + if (on) { + var w = lsize / 2 * ratio * 0.5; + var x = w * 0.2; + $label.append($s.createSVGElement('path'). + attr('d', + 'M' + x + ' ' + (lsize / 2 * ratio) + + 'L ' + x + ' ' + -lsize / 2 * ratio + + 'Q' + (x - lsize / 2 * ratio * 0.125) + + ' ' + (-lsize / 2 * ratio * 0.6) + + ' ' + (x - w) + + ' ' + (-lsize / 2 * ratio * 0.5) ). + attr('stroke-linecap' , 'square'). + attr('stroke-linejoin' , 'round') ); + } else { + $label.append($s.createSVGElement('ellipse'). + attr({ cx : 0, cy : 0, + rx : lsize / 2 * ratio * 0.6, ry : lsize / 2 * ratio}). + attr('fill', 'none') ); + } + }, + setColor : function(color) { + $label.attr('stroke', color); + } + }); + return $label; + }; + + var createNumFactory = function(type) { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = type == 'dsp'? device.addInput() : null; + var out1 = type == 'src'? device.addOutput() : null; + + var on = false; + var updateOutput = null; + + var direction = null; + if (device.deviceDef.state) { + direction = device.deviceDef.state.direction; + } + if (typeof direction != 'number') { + direction = type == 'src'? Direction.WE : Direction.EW; + } + + if (type == 'src') { + if (device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return { direction : direction, on : on }; + }; + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + updateOutput = function() { + out1.setValue(on? 1 : null); + }; + updateOutput(); + } else if (type == 'dsp') { + device.getState = function() { + return { direction : direction }; + }; + } + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + var size = device.getSize(); + + device.$ui.css('fill', '#eeeeee'); + + var $button = null; + if (type == 'src') { + $button = $s.createSVGElement('rect'). + attr({x: 1, y: 1, width: size.width - 2, height: size.height - 2, + rx: 2, ry: 2, stroke: 'none', fill: '#cccccc'}). + append($s.createSVGElement('title') ); + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + on = !on; + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + }; + var button_mouseUpHandler = function(event) { + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + $button.on('dblclick', button_dblClickHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + $button.off('dblclick', button_dblClickHandler); + }); + var out1_setValue = out1.setValue; + out1.setValue = function(value) { + out1_setValue(value); + $s.controller($numLabel).setOn(out1.getValue() != null); + }; + } + + var $numLabel = createNumLabel(size); + $s.controller($numLabel).setColor('#000000'); + device.$ui.append($numLabel); + + if (type == 'src') { + $s.controller($numLabel).setOn(out1.getValue() != null); + } else if (type == 'dsp') { + $s.controller($numLabel).setOn(false); + device.$ui.on('inputValueChange', function() { + $s.controller($numLabel).setOn(in1.getValue() != null); + }); + } + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + if (type == 'src') { + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr('cx', size.width).attr('cy', size.height / 2).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + } + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + if (direction == Direction.WE) { + x0 += d; + x1 += unit; + } else if (direction == Direction.NS) { + y0 += d * 1.25; + y1 += unit; + } else if (direction == Direction.EW) { + x0 -= d; + x1 -= unit; + } else if (direction == Direction.SN) { + y0 -= d * 1.25; + y1 -= unit; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + if (type == 'src') { + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + } else if (type == 'dsp') { + $s.transform(in1.$ui, x1, y1); + } + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: -unit / 2, y: 0, width: unit * 2, height: unit}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: -unit / 2, width: unit, height: unit * 2}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + if (type == 'src') { + $button.css('opacity', opacity); + $point.css('opacity', 1 - opacity); + } + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + direction = (direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + $s.registerDevice('NumSrc', createNumFactory('src') ); + $s.registerDevice('NumDsp', createNumFactory('dsp') ); + +}(simcir); diff --git a/SRIP/Libraries/simcirjs/misc/simcir-transmitter.js b/SRIP/Libraries/simcirjs/misc/simcir-transmitter.js new file mode 100644 index 00000000..c9a08c30 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir-transmitter.js @@ -0,0 +1,325 @@ +// +// SimcirJS - Transmitter +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Transmitter + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createTransmitterFactory = function() { + + var emptyGroup = { + getValue : function() { return null; }, + setValue : function(value, force) {}, + getInput : function() { return null; }, + setInput : function(device) {} + }; + + var createGroup = function(devices) { + var input = function() { + for (var i = 0; i < devices.length; i += 1) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + return devices[i]; + } + } + return null; + }(); + return { + getValue : function() { + return input != null? input.getInputs()[0].getValue() : null; + }, + setValue : function(value, force) { + for (var i = 0; i < devices.length; i += 1) { + devices[i].getOutputs()[0].setValue(value, force); + } + }, + getInput : function() { + return input; + }, + setInput : function(device) { + input = device; + for (var i = 0; i < devices.length; i += 1) { + if (devices[i] != device) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + } + } + } + }; + }; + + var createGroupByLabel = function(devices) { + var devicesByLabel = {}; + for (var id in devices) { + var device = devices[id]; + var label = device.getLabel(); + if (!devicesByLabel[label]) { + devicesByLabel[label] = []; + } + devicesByLabel[label].push(device); + } + var groupByLabel = {}; + for (var label in devicesByLabel) { + groupByLabel[label] = createGroup(devicesByLabel[label]); + } + return groupByLabel; + }; + + var createGroupManager = function() { + + var devices = {}; + var idCount = 0; + var groupCache = null; + + var register = function(device) { + var id = 'id' + idCount++; + if (device.headless) { + devices[id] = device; + reset(); + } else { + device.$ui.on('deviceAdd', function() { + devices[id] = device; + reset(); + }).on('deviceRemove', function() { + delete devices[id]; + reset(); + }); + } + }; + + var reset = function() { + groupCache = null; + }; + + var getGroupByLabel = function(label) { + if (!groupCache) { + groupCache = createGroupByLabel(devices); + } + return groupCache[label] || emptyGroup; + }; + + return { + register : register, + reset : reset, + getGroupByLabel : getGroupByLabel + }; + }; + + var maxFadeCount = 16; + var fadeTimeout = 100; + var getEmptyGroupByLabel = function(label) { return emptyGroup; }; + + return function(device) { + + var getGroupByLabel = getEmptyGroupByLabel; + if (device.scope) { + var groupManager = device.scope.transmitterGroupManager; + if (!groupManager) { + groupManager = createGroupManager(); + device.scope.transmitterGroupManager = groupManager; + } + groupManager.register(device); + getGroupByLabel = function(label) { + return groupManager.getGroupByLabel(label); + }; + } + + var in1 = device.addInput(); + var out1 = device.addOutput(); + var lastLabel = device.getLabel(); + + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + getGroupByLabel(device.getLabel() ).setValue(in1.getValue(), force); + } + }; + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + if (outNode != null) { + getGroupByLabel(device.getLabel() ).setInput(device); + } + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + + var $label = device.$ui.children('.simcir-device-label'); + var defaultLabelX = +$label.attr('x'); + var defaultLabelY = +$label.attr('y'); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr({cx: unit / 2, cy: unit / 2, r: 2}). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var updateUI = function() { + + var isInSet = in1.getOutput() != null; + var isOutSet = out1.getInputs().length > 0; + + var x0, y0, x1, y1, cx, cy; + x0 = y0 = x1 = y1 = cx = cy = unit / 2; + var d = unit / 2; + x0 -= d; + x1 += d; + if (isInSet && isOutSet) { + } else if (isInSet) { + cx += d; + } else if (isOutSet) { + cx -= d; + } + $point.attr('cx', cx).attr('cy', cy); + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + + var labelX = defaultLabelX; + var labelY = defaultLabelY; + var anchor = 'middle'; + if (isInSet && isOutSet) { + labelY -= unit / 4; + } else if (!isInSet && !isOutSet) { + labelY -= unit / 4; + } else if (isInSet) { + labelX += unit; + labelY -= unit; + anchor = 'start'; + } else if (isOutSet) { + labelX -= unit; + labelY -= unit; + anchor = 'end'; + } + $label.attr('x', labelX).attr('y', labelY). + attr('text-anchor', anchor); + }; + + updateUI(); + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + updateUI(); + }; + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updateUI(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updateUI(); + }; + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var device_mouseoutHandler = function(event) { + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + + device.$ui.on('mouseover', function(event) { + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + out1.setValue(getGroupByLabel(device.getLabel() ).getValue() ); + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).on('mouseout', device_mouseoutHandler); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler); + }).on('deviceLabelChange', function() { + + groupManager.reset(); + + var lastGrp = getGroupByLabel(lastLabel); + lastGrp.setValue(lastGrp.getValue() ); + + var newLabel = device.getLabel(); + var newGrp = getGroupByLabel(newLabel); + if (in1.getOutput() != null) { + newGrp.setInput(device); + } + newGrp.setValue(newGrp.getValue() ); + + lastLabel = newLabel; + + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + description: + 'Transmit a signal to another trasmitter that has same label.', + params: [], + code: '{"type":"' + device.deviceDef.type + '"}' + }; + }; + }; + }; + + $s.registerDevice('Transmitter', createTransmitterFactory() ); + +}(simcir); diff --git a/SRIP/Libraries/simcirjs/misc/simcir.d.ts b/SRIP/Libraries/simcirjs/misc/simcir.d.ts new file mode 100644 index 00000000..e8de5c02 --- /dev/null +++ b/SRIP/Libraries/simcirjs/misc/simcir.d.ts @@ -0,0 +1,127 @@ +// +// SimcirJS - TypeScript Declaration File +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +interface SimcirPoint { x: number, y: number } +interface SimcirSize { width: number, height: number } +interface SimcirRect extends SimcirPoint, SimcirSize {} + +interface SimcirEvent { target: JQuery, type: string } + +interface SimcirGraphics { + attr: { [name : string] : (string|number) }; + moveTo(x: number, y: number) : void; + lineTo(x: number, y: number) : void; + curveTo(x1: number, y1: number, x: number, y: number) : void; + closePath(close?: boolean) : void; + drawRect(x: number, y: number, width: number, height: number) : void; + drawCircle(x: number, y: number, r: number) : void; +} + +interface SimcirNode { + type: string; + label: string; + description: string; + $ui: JQuery; + headless: boolean; + getValue() : any; + setValue(value : any, force? : boolean) : void; +} + +interface SimcirInputNode extends SimcirNode { + setOutput(outNode : SimcirNode) : void; + getOutput() : SimcirOutputNode; +} + +interface SimcirOutputNode extends SimcirNode { + getInputs() : SimcirInputNode[]; + connectTo(inNode : SimcirInputNode) : void; + disconnectFrom(inNode : SimcirInputNode) : void; +} + +interface SimcirDeviceDefBase { [id : string] : string|number } + +interface SimcirDeviceDef extends SimcirDeviceDefBase { + type: string; + label?: string; +} + +interface SimcirDeviceInstance extends SimcirDeviceDef { + id: string; + x: number; + y: number; +} + +interface SimcirDocument { params: SimcirParamDescription[]; code: string; } + +interface SimcirParamDescription { + name: string; + type: string; + defaultValue: any; + description: string; +} + +interface SimcirDevice { + $ui: JQuery; + doc: SimcirDocument; + halfPitch: boolean; + headless: boolean; + scope: any; + deviceDef: Def; + addInput(label? : string, description? : string) : SimcirInputNode; + getInputs() : SimcirInputNode[]; + addOutput(label? : string, description? : string) : SimcirOutputNode; + getOutputs() : SimcirOutputNode[]; + getLabel() : string; + getSize() : SimcirSize; + createUI() : void; + getState() : any; +} + +interface SimcirConnectorDef { from: string; to: string; } + +interface SimcirData { + width?: number; + height?: number; + toolbox?: SimcirDeviceDef[]; + showToolbox?: boolean; + editable?: boolean; + layout? : SimcirCustomLayout; + devices?: SimcirDeviceInstance[]; + connectors?: SimcirConnectorDef[]; +} + +interface SimcirCustomLayout { + rows: number; + cols: number; + hideLabelOnWorkspace?: boolean; + nodes: { [label : string] : string }; +} + +type SimcirTypeFactory = (device : Def) => void; + +interface Simcir { + unit: number; + createSVGElement(tagName: string) : JQuery; + graphics($target: JQuery) : SimcirGraphics; + offset($o: JQuery) : SimcirPoint; + transform($o: JQuery, x: number, y: number, rotate: number) : void; + transform($o: JQuery) : { x: number; y: number; rotate: number; }; + enableEvents($o: JQuery, enable: boolean) : void; + controller($ui: JQuery, controller: any) : void; + controller($ui: JQuery) : any; + registerDevice(type: string, factory: SimcirTypeFactory) : void; + registerDevice(type: string, data: SimcirData) : void; + clearSimcir($placeHolder: JQuery) : JQuery; + setupSimcir($placeHolder: JQuery, data: SimcirData) : JQuery; + createWorkspace(data: SimcirData) : JQuery; +} + +declare var simcir : Simcir; diff --git a/SRIP/Libraries/simcirjs/simcir-basicset.css b/SRIP/Libraries/simcirjs/simcir-basicset.css new file mode 100644 index 00000000..9c163744 --- /dev/null +++ b/SRIP/Libraries/simcirjs/simcir-basicset.css @@ -0,0 +1,44 @@ +/* + * SimcirJS - basicset + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-basicset-dc { + fill: #ffcccc; +} + +.simcir-basicset-switch { + fill: #ccccff; +} + +.simcir-basicset-switch-button-pressed { + fill: #9999cc; +} + +.simcir-basicset-symbol { + stroke: #000000; + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; +} + +.simcir-basicset-osc { + fill: #ffcccc; +} + +.simcir-basicset-knob { + stroke: none; + fill: #333333; +} + +.simcir-basicset-knob-mark { + stroke: #ffffff; + stroke-width: 3; +} diff --git a/SRIP/Libraries/simcirjs/simcir-basicset.js b/SRIP/Libraries/simcirjs/simcir-basicset.js new file mode 100644 index 00000000..072f804f --- /dev/null +++ b/SRIP/Libraries/simcirjs/simcir-basicset.js @@ -0,0 +1,1006 @@ +// +// SimcirJS - basicset +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DC +// LED +// PMOS +// NMOS +// PushOff +// PushOn +// Toggle +// BUF +// NOT +// AND +// NAND +// OR +// NOR +// EOR +// ENOR +// OSC +// 7seg +// 16seg +// 4bit7seg +// RotaryEncoder +// BusIn +// BusOut +// NMOS +// PMOS +// CAP + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + // red/black + var defaultLEDColor = '#ff0000'; + var defaultLEDBgColor = '#000000'; + + var multiplyColor = function() { + var HEX = '0123456789abcdef'; + var toIColor = function(sColor) { + if (!sColor) { + return 0; + } + sColor = sColor.toLowerCase(); + if (sColor.match(/^#[0-9a-f]{3}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt( (i >> 1) + 1) ); + } + return iColor; + } else if (sColor.match(/^#[0-9a-f]{6}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt(i + 1) ); + } + return iColor; + } + return 0; + }; + var toSColor = function(iColor) { + var sColor = '#'; + for (var i = 0; i < 6; i += 1) { + sColor += HEX.charAt( (iColor >>> (5 - i) * 4) & 0x0f); + } + return sColor; + }; + var toRGB = function(iColor) { + return { + r: (iColor >>> 16) & 0xff, + g: (iColor >>> 8) & 0xff, + b: iColor & 0xff}; + }; + var multiplyColor = function(iColor1, iColor2, ratio) { + var c1 = toRGB(iColor1); + var c2 = toRGB(iColor2); + var mc = function(v1, v2, ratio) { + return ~~Math.max(0, Math.min( (v1 - v2) * ratio + v2, 255) ); + }; + return (mc(c1.r, c2.r, ratio) << 16) | + (mc(c1.g, c2.g, ratio) << 8) | mc(c1.b, c2.b, ratio); + }; + return function(color1, color2, ratio) { + return toSColor(multiplyColor( + toIColor(color1), toIColor(color2), ratio) ); + }; + }(); + + // symbol draw functions + var drawBUF = function(g, x, y, width, height) { + g.moveTo(x, y); + g.lineTo(x + width, y + height / 2); + g.lineTo(x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawAND = function(g, x, y, width, height) { + g.moveTo(x, y); + g.curveTo(x + width, y, x + width, y + height / 2); + g.curveTo(x + width, y + height, x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawOR = function(g, x, y, width, height) { + var depth = width * 0.2; + g.moveTo(x, y); + g.curveTo(x + width - depth, y, x + width, y + height / 2); + g.curveTo(x + width - depth, y + height, x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(true); + }; + var drawNMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5, y + height/2); + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + + var drawCAP = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5, y + height/2); + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height/2); + g.lineTo(x + height,y + height/2); + g.closePath(false); + }; + + var drawGND = function(g, x, y, width, height) { + g.moveTo(x + width, y + height/2); + g.lineTo(x + 4*width/5, y + height/2); + + g.moveTo(x + 2*width/5, y + height*3.2/6 ); + g.lineTo(x + 2*width/5, y + height*2.7/6); + + g.moveTo(x + 3*width/5, y + height*4/6); + g.lineTo(x + 3*width/5, y + height*2/6); + + g.moveTo(x + 4*width/5, y + height*5/6); + g.lineTo(x + 4*width/5, y + height/6); + + g.closePath(false); + + }; + var drawPMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5 - 3, y + height/2); + + g.drawCircle(x + 2*width/5 - 2, y + height/2,1.5); + + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + var drawEOR = function(g, x, y, width, height) { + drawOR(g, x + 3, y, width - 3, height); + var depth = (width - 3) * 0.2; + g.moveTo(x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(); + }; + var drawNOT = function(g, x, y, width, height) { + drawBUF(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNAND = function(g, x, y, width, height) { + drawAND(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNOR = function(g, x, y, width, height) { + drawOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawENOR = function(g, x, y, width, height) { + drawEOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + // logical functions + var AND = function(a, b) { return a & b; }; + var OR = function(a, b) { return a | b; }; + var EOR = function(a, b) { return a ^ b; }; + var BUF = function(a) { return (a == 1)? 1 : 0; }; + var NOT = function(a) { return (a == 1)? 0 : 1; }; + + var onValue = 1; + var offValue = null; + var isHot = function(v) { return v != null; }; + var intValue = function(v) { return isHot(v)? 1 : 0; }; + + var createSwitchFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + var on = (type == 'PushOff'); + + if (type == 'Toggle' && device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return type == 'Toggle'? { on : on } : null; + }; + + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + var updateOutput = function() { + out1.setValue(on? in1.getValue() : null); + }; + updateOutput(); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var $button = $s.createSVGElement('rect'). + attr({x: size.width / 4, y: size.height / 4, + width: size.width / 2, height: size.height / 2, + rx: 2, ry: 2}); + $button.addClass('simcir-basicset-switch-button'); + if (type == 'Toggle' && on) { + $button.addClass('simcir-basicset-switch-button-pressed'); + } + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + if (type == 'PushOn') { + on = true; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = false; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + on = !on; + $button.addClass('simcir-basicset-switch-button-pressed'); + } + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_mouseUpHandler = function(event) { + if (type == 'PushOn') { + on = false; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = true; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + // keep state + if (!on) { + $button.removeClass('simcir-basicset-switch-button-pressed'); + } + } + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + }); + device.$ui.addClass('simcir-basicset-switch'); + }; + }; + }; + + var createLogicGateFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + + + var createGND = function(op, out, draw) { + return function(device) { + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + /* + var segBase = function() { + return { + width: 0, + height: 0, + allSegments: '', + drawSegment: function(g, segment, color) {}, + drawPoint: function(g, color) {} + }; + }; + */ + //---------------------------------------------------------------------------------- + var createMOSFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + device.addInput(); + device.addInput(); + device.addInput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + //outputs[0].setValue( (b == 1)? 1 : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getMOSSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + + //---------------------------------------------------------------------------------- + + var _7Seg = function() { + var _SEGMENT_DATA = { + a: [575, 138, 494, 211, 249, 211, 194, 137, 213, 120, 559, 120], + b: [595, 160, 544, 452, 493, 500, 459, 456, 500, 220, 582, 146], + c: [525, 560, 476, 842, 465, 852, 401, 792, 441, 562, 491, 516], + d: [457, 860, 421, 892, 94, 892, 69, 864, 144, 801, 394, 801], + e: [181, 560, 141, 789, 61, 856, 48, 841, 96, 566, 148, 516], + f: [241, 218, 200, 453, 150, 500, 115, 454, 166, 162, 185, 145], + g: [485, 507, 433, 555, 190, 555, 156, 509, 204, 464, 451, 464] + }; + return { + width: 636, + height: 1000, + allSegments: 'abcdefg', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(542, 840, 46); + } + }; + }(); + + var _16Seg = function() { + var _SEGMENT_DATA = { + a: [255, 184, 356, 184, 407, 142, 373, 102, 187, 102], + b: [418, 144, 451, 184, 552, 184, 651, 102, 468, 102], + c: [557, 190, 507, 455, 540, 495, 590, 454, 656, 108], + d: [487, 550, 438, 816, 506, 898, 573, 547, 539, 507], + e: [281, 863, 315, 903, 500, 903, 432, 821, 331, 821], + f: [35, 903, 220, 903, 270, 861, 236, 821, 135, 821], + g: [97, 548, 30, 897, 129, 815, 180, 547, 147, 507], + h: [114, 455, 148, 495, 198, 454, 248, 189, 181, 107], + i: [233, 315, 280, 452, 341, 493, 326, 331, 255, 200], + j: [361, 190, 334, 331, 349, 485, 422, 312, 445, 189, 412, 149], + k: [430, 316, 354, 492, 432, 452, 522, 334, 547, 200], + l: [354, 502, 408, 542, 484, 542, 534, 500, 501, 460, 434, 460], + m: [361, 674, 432, 805, 454, 691, 405, 550, 351, 509], + n: [265, 693, 242, 816, 276, 856, 326, 815, 353, 676, 343, 518], + o: [255, 546, 165, 671, 139, 805, 258, 689, 338, 510], + p: [153, 502, 187, 542, 254, 542, 338, 500, 278, 460, 203, 460] + }; + return { + width: 690, + height: 1000, + allSegments: 'abcdefghijklmnop', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(610, 900, 30); + } + }; + }(); + + var drawSeg = function(seg, g, pattern, hiColor, loColor, bgColor) { + g.attr['stroke'] = 'none'; + if (bgColor) { + g.attr['fill'] = bgColor; + g.drawRect(0, 0, seg.width, seg.height); + } + var on; + for (var i = 0; i < seg.allSegments.length; i += 1) { + var c = seg.allSegments.charAt(i); + on = (pattern != null && pattern.indexOf(c) != -1); + seg.drawSegment(g, c, on? hiColor : loColor); + } + on = (pattern != null && pattern.indexOf('.') != -1); + seg.drawPoint(g, on? hiColor : loColor); + }; + + var createSegUI = function(device, seg) { + var size = device.getSize(); + var sw = seg.width; + var sh = seg.height; + var dw = size.width - unit; + var dh = size.height - unit; + var scale = (sw / sh > dw / dh)? dw / sw : dh / sh; + var tx = (size.width - seg.width * scale) / 2; + var ty = (size.height - seg.height * scale) / 2; + return $s.createSVGElement('g'). + attr('transform', 'translate(' + tx + ' ' + ty + ')' + + ' scale(' + scale + ') '); + }; + + var createLEDSegFactory = function(seg) { + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var allSegs = seg.allSegments + '.'; + device.halfPitch = true; + for (var i = 0; i < allSegs.length; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var segs = ''; + for (var i = 0; i < allSegs.length; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + segs += allSegs.charAt(i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), segs, + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createLED4bitFactory = function() { + + var _PATTERNS = { + 0: 'abcdef', + 1: 'bc', + 2: 'abdeg', + 3: 'abcdg', + 4: 'bcfg', + 5: 'acdfg', + 6: 'acdefg', + 7: 'abc', + 8: 'abcdefg', + 9: 'abcdfg', + a: 'abcefg', + b: 'cdefg', + c: 'adef', + d: 'bcdeg', + e: 'adefg', + f: 'aefg' + }; + + var getPattern = function(value) { + return _PATTERNS['0123456789abcdef'.charAt(value)]; + }; + + var seg = _7Seg; + + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + for (var i = 0; i < 4; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var value = 0; + for (var i = 0; i < 4; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + value += (1 << i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), getPattern(value), + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createRotaryEncoderFactory = function() { + var _MIN_ANGLE = 45; + var _MAX_ANGLE = 315; + var thetaToAngle = function(theta) { + var angle = (theta - Math.PI / 2) / Math.PI * 180; + while (angle < 0) { + angle += 360; + } + while (angle > 360) { + angle -= 360; + } + return angle; + }; + return function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 4); + device.halfPitch = numOutputs > 4; + device.addInput(); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + + var $knob = $s.createSVGElement('g'). + attr('class', 'simcir-basicset-knob'). + append($s.createSVGElement('rect'). + attr({x:-10,y:-10,width:20,height:20})); + var r = Math.min(size.width, size.height) / 4 * 1.5; + var g = $s.graphics($knob); + g.drawCircle(0, 0, r); + g.attr['class'] = 'simcir-basicset-knob-mark'; + g.moveTo(0, 0); + g.lineTo(r, 0); + g.closePath(); + device.$ui.append($knob); + + var _angle = _MIN_ANGLE; + var setAngle = function(angle) { + _angle = Math.max(_MIN_ANGLE, Math.min(angle, _MAX_ANGLE) ); + update(); + }; + + var dragPoint = null; + var knob_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + dragPoint = {x: event.pageX, y: event.pageY}; + $(document).on('mousemove', knob_mouseMoveHandler); + $(document).on('mouseup', knob_mouseUpHandler); + }; + var knob_mouseMoveHandler = function(event) { + var off = $knob.parent('svg').offset(); + var pos = $s.offset($knob); + var cx = off.left + pos.x; + var cy = off.top + pos.y; + var dx = event.pageX - cx; + var dy = event.pageY - cy; + if (dx == 0 && dy == 0) return; + setAngle(thetaToAngle(Math.atan2(dy, dx) ) ); + }; + var knob_mouseUpHandler = function(event) { + $(document).off('mousemove', knob_mouseMoveHandler); + $(document).off('mouseup', knob_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($knob, true); + $knob.on('mousedown', knob_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($knob, false); + $knob.off('mousedown', knob_mouseDownHandler); + }); + + var update = function() { + $s.transform($knob, size.width / 2, + size.height / 2, _angle + 90); + var max = 1 << numOutputs; + var value = Math.min( ( (_angle - _MIN_ANGLE) / + (_MAX_ANGLE - _MIN_ANGLE) * max), max - 1); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue( (value & (1 << i) )? + device.getInputs()[0].getValue() : null); + } + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 4, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":4}' + }; + }; + }; + }; + + // register direct current source + $s.registerDevice('DC', function(device) { + device.addOutput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-dc'); + }; + device.$ui.on('deviceAdd', function() { + device.getOutputs()[0].setValue(onValue); + }); + device.$ui.on('deviceRemove', function() { + device.getOutputs()[0].setValue(null); + }); + }); + + // register simple LED + $s.registerDevice('LED', function(device) { + var in1 = device.addInput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var bLoColor = multiplyColor(hiColor, bgColor, 0.2); + var bHiColor = multiplyColor(hiColor, bgColor, 0.8); + var size = device.getSize(); + var $ledbase = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4}). + attr('stroke', 'none'). + attr('fill', bLoColor); + device.$ui.append($ledbase); + var $led = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4 * 0.8}). + attr('stroke', 'none'). + attr('fill', loColor); + device.$ui.append($led); + device.$ui.on('inputValueChange', function() { + $ledbase.attr('fill', isHot(in1.getValue() )? bHiColor : bLoColor); + $led.attr('fill', isHot(in1.getValue() )? hiColor : loColor); + }); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }); + + // register switches + $s.registerDevice('PushOff', createSwitchFactory('PushOff') ); + $s.registerDevice('PushOn', createSwitchFactory('PushOn') ); + $s.registerDevice('Toggle', createSwitchFactory('Toggle') ); + + // register logic gates + $s.registerDevice('BUF', createLogicGateFactory(null, BUF, drawBUF) ); + $s.registerDevice('NOT', createLogicGateFactory(null, NOT, drawNOT) ); + $s.registerDevice('AND', createLogicGateFactory(AND, BUF, drawAND) ); + $s.registerDevice('NAND', createLogicGateFactory(AND, NOT, drawNAND) ); + $s.registerDevice('OR', createLogicGateFactory(OR, BUF, drawOR) ); + $s.registerDevice('NOR', createLogicGateFactory(OR, NOT, drawNOR) ); + $s.registerDevice('XOR', createLogicGateFactory(EOR, BUF, drawEOR) ); + $s.registerDevice('XNOR', createLogicGateFactory(EOR, NOT, drawENOR) ); + $s.registerDevice('CAP', createLogicGateFactory(null, NOT, drawCAP) ); + $s.registerDevice('GND', createGND(null, NOT, drawGND) ); + + //--------------------------------------------------------------- + $s.registerDevice('NMOS', createMOSFactory(null, NOT, drawNMOS) ); + $s.registerDevice('PMOS', createMOSFactory(null, NOT, drawPMOS) ); + //--------------------------------------------------------------- + + // deprecated. not displayed in the default toolbox. + $s.registerDevice('EOR', createLogicGateFactory(EOR, BUF, drawEOR), true); + $s.registerDevice('ENOR', createLogicGateFactory(EOR, NOT, drawENOR), true); + + // register Oscillator + $s.registerDevice('OSC', function(device) { + var freq = device.deviceDef.freq || 10; + var delay = ~~(500 / freq); + var out1 = device.addOutput(); + var timerId = null; + var on = false; + device.$ui.on('deviceAdd', function() { + timerId = window.setInterval(function() { + out1.setValue(on? onValue : offValue); + on = !on; + }, delay); + }); + device.$ui.on('deviceRemove', function() { + if (timerId != null) { + window.clearInterval(timerId); + timerId = null; + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-osc'); + device.doc = { + params: [ + {name: 'freq', type: 'number', defaultValue: '10', + description: 'frequency of an oscillator.'} + ], + code: '{"type":"' + device.deviceDef.type + '","freq":10}' + }; + }; + }); + + // register LED seg + $s.registerDevice('7seg', createLEDSegFactory(_7Seg) ); + $s.registerDevice('16seg', createLEDSegFactory(_16Seg) ); + $s.registerDevice('4bit7seg', createLED4bitFactory() ); + + // register Rotary Encoder + $s.registerDevice('RotaryEncoder', createRotaryEncoderFactory() ); + + $s.registerDevice('BusIn', function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 8); + device.halfPitch = true; + device.addInput('', 'x' + numOutputs); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + var extractValue = function(busValue, i) { + return (busValue != null && typeof busValue == 'object' && + typeof busValue[i] != 'undefined')? busValue[i] : null; + }; + device.$ui.on('inputValueChange', function() { + var busValue = device.getInputs()[0].getValue(); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue(extractValue(busValue, i) ); + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 8, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":8}' + }; + }; + }); + + $s.registerDevice('BusOut', function(device) { + var numInputs = Math.max(2, device.deviceDef.numInputs || 8); + device.halfPitch = true; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput('', 'x' + numInputs); + device.$ui.on('inputValueChange', function() { + var busValue = []; + var hotCount = 0; + for (var i = 0; i < numInputs; i += 1) { + var value = device.getInputs()[i].getValue(); + if (isHot(value) ) { + hotCount += 1; + } + busValue.push(value); + } + device.getOutputs()[0].setValue( + (hotCount > 0)? busValue : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numInputs', type: 'number', defaultValue: 8, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":8}' + }; + }; + }); + +}(simcir); diff --git a/SRIP/Libraries/simcirjs/simcir-library.js b/SRIP/Libraries/simcirjs/simcir-library.js new file mode 100644 index 00000000..c8c52f9b --- /dev/null +++ b/SRIP/Libraries/simcirjs/simcir-library.js @@ -0,0 +1,601 @@ +// +// SimcirJS - library +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// RS-FF +// JK-FF +// T-FF +// D-FF +// 8bitCounter +// HalfAdder +// FullAdder +// 4bitAdder +// 2to4BinaryDecoder +// 3to8BinaryDecoder +// 4to16BinaryDecoder +// OSCo +// Pass Transistor + +simcir.registerDevice('RS-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"NAND","id":"dev0","x":184,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev1","x":184,"y":80,"label":"NAND"}, + {"type":"In","id":"dev2","x":136,"y":24,"label":"~S"}, + {"type":"In","id":"dev3","x":136,"y":88,"label":"~R"}, + {"type":"Out","id":"dev4","x":232,"y":32,"label":"Q"}, + {"type":"Out","id":"dev5","x":232,"y":80,"label":"~Q"}, + {"type":"PushOff","id":"dev6","x":88,"y":24,"label":"PushOff"}, + {"type":"PushOff","id":"dev7","x":88,"y":88,"label":"PushOff"}, + {"type":"DC","id":"dev8","x":40,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev1.in1","to":"dev3.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev1.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('JK-FF', +{ + "width":480, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"RS-FF","id":"dev0","x":216,"y":112,"label":"RS-FF"}, + {"type":"RS-FF","id":"dev1","x":344,"y":112,"label":"RS-FF"}, + {"type":"NAND","numInputs":3,"id":"dev2","x":168,"y":80,"label":"NAND"}, + {"type":"NAND","numInputs":3,"id":"dev3","x":168,"y":144,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":296,"y":80,"label":"NAND"}, + {"type":"NAND","id":"dev5","x":296,"y":144,"label":"NAND"}, + {"type":"NOT","id":"dev6","x":168,"y":24,"label":"NOT"}, + {"type":"In","id":"dev7","x":120,"y":64,"label":"J"}, + {"type":"In","id":"dev8","x":120,"y":112,"label":"CLK"}, + {"type":"In","id":"dev9","x":120,"y":160,"label":"K"}, + {"type":"Out","id":"dev10","x":424,"y":80,"label":"Q"}, + {"type":"Out","id":"dev11","x":424,"y":144,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":72,"y":64,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":72,"y":112,"label":"PushOn"}, + {"type":"Toggle","id":"dev14","x":72,"y":160,"label":"Toggle"}, + {"type":"DC","id":"dev15","x":24,"y":112,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev7.out0"}, + {"from":"dev2.in2","to":"dev8.out0"}, + {"from":"dev3.in0","to":"dev8.out0"}, + {"from":"dev3.in1","to":"dev9.out0"}, + {"from":"dev3.in2","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev4.in1","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev0.out1"}, + {"from":"dev5.in1","to":"dev6.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev12.out0"}, + {"from":"dev8.in0","to":"dev13.out0"}, + {"from":"dev9.in0","to":"dev14.out0"}, + {"from":"dev10.in0","to":"dev1.out0"}, + {"from":"dev11.in0","to":"dev1.out1"}, + {"from":"dev12.in0","to":"dev15.out0"}, + {"from":"dev13.in0","to":"dev15.out0"}, + {"from":"dev14.in0","to":"dev15.out0"} + ] +} +); + +simcir.registerDevice('T-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"JK-FF","id":"dev0","x":168,"y":48,"label":"JK-FF"}, + {"type":"In","id":"dev1","x":120,"y":32,"label":"T"}, + {"type":"In","id":"dev2","x":120,"y":80,"label":"CLK"}, + {"type":"Out","id":"dev3","x":248,"y":32,"label":"Q"}, + {"type":"Out","id":"dev4","x":248,"y":80,"label":"~Q"}, + {"type":"Toggle","id":"dev5","x":72,"y":32,"label":"Toggle"}, + {"type":"PushOn","id":"dev6","x":72,"y":80,"label":"PushOn"}, + {"type":"DC","id":"dev7","x":24,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev0.in1","to":"dev2.out0"}, + {"from":"dev0.in2","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev4.in0","to":"dev0.out1"}, + {"from":"dev5.in0","to":"dev7.out0"}, + {"from":"dev6.in0","to":"dev7.out0"} + ] +} +); + +simcir.registerDevice('D-FF', +{ + "width":540, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":128,"y":24,"label":"D"}, + {"type":"In","id":"dev1","x":168,"y":128,"label":"CLK"}, + {"type":"NOT","id":"dev2","x":176,"y":64,"label":"NOT"}, + {"type":"NAND","id":"dev3","x":224,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":224,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev5","x":272,"y":64,"label":"RS-FF"}, + {"type":"NOT","id":"dev6","x":296,"y":128,"label":"NOT"}, + {"type":"NAND","id":"dev7","x":352,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev8","x":352,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev9","x":400,"y":64,"label":"RS-FF"}, + {"type":"Out","id":"dev10","x":480,"y":32,"label":"Q"}, + {"type":"Out","id":"dev11","x":480,"y":96,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":80,"y":24,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":80,"y":128,"label":"PushOn"}, + {"type":"DC","id":"dev14","x":32,"y":72,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev12.out0"}, + {"from":"dev1.in0","to":"dev13.out0"}, + {"from":"dev2.in0","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev4.in1","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev1.out0"}, + {"from":"dev7.in0","to":"dev5.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev6.out0"}, + {"from":"dev8.in1","to":"dev5.out1"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev8.out0"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev9.out1"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev13.in0","to":"dev14.out0"} + ] +} +); + +simcir.registerDevice('8bitCounter', +{ + "width":320, + "height":420, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"T-FF","id":"dev0","x":184,"y":16,"label":"T-FF"}, + {"type":"T-FF","id":"dev1","x":184,"y":64,"label":"T-FF"}, + {"type":"T-FF","id":"dev2","x":184,"y":112,"label":"T-FF"}, + {"type":"T-FF","id":"dev3","x":184,"y":160,"label":"T-FF"}, + {"type":"T-FF","id":"dev4","x":184,"y":208,"label":"T-FF"}, + {"type":"T-FF","id":"dev5","x":184,"y":256,"label":"T-FF"}, + {"type":"T-FF","id":"dev6","x":184,"y":304,"label":"T-FF"}, + {"type":"T-FF","id":"dev7","x":184,"y":352,"label":"T-FF"}, + {"type":"Out","id":"dev8","x":264,"y":16,"label":"D0"}, + {"type":"Out","id":"dev9","x":264,"y":64,"label":"D1"}, + {"type":"Out","id":"dev10","x":264,"y":112,"label":"D2"}, + {"type":"Out","id":"dev11","x":264,"y":160,"label":"D3"}, + {"type":"Out","id":"dev12","x":264,"y":208,"label":"D4"}, + {"type":"Out","id":"dev13","x":264,"y":256,"label":"D5"}, + {"type":"Out","id":"dev14","x":264,"y":304,"label":"D6"}, + {"type":"Out","id":"dev15","x":264,"y":352,"label":"D7"}, + {"type":"In","id":"dev16","x":120,"y":16,"label":"T"}, + {"type":"In","id":"dev17","x":120,"y":112,"label":"CLK"}, + {"type":"PushOn","id":"dev18","x":72,"y":112,"label":"PushOn"}, + {"type":"DC","id":"dev19","x":24,"y":16,"label":"DC"}, + {"type":"Toggle","id":"dev20","x":72,"y":16,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev16.out0"}, + {"from":"dev0.in1","to":"dev17.out0"}, + {"from":"dev1.in0","to":"dev16.out0"}, + {"from":"dev1.in1","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev16.out0"}, + {"from":"dev2.in1","to":"dev1.out0"}, + {"from":"dev3.in0","to":"dev16.out0"}, + {"from":"dev3.in1","to":"dev2.out0"}, + {"from":"dev4.in0","to":"dev16.out0"}, + {"from":"dev4.in1","to":"dev3.out0"}, + {"from":"dev5.in0","to":"dev16.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev6.in1","to":"dev5.out0"}, + {"from":"dev7.in0","to":"dev16.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev9.in0","to":"dev1.out0"}, + {"from":"dev10.in0","to":"dev2.out0"}, + {"from":"dev11.in0","to":"dev3.out0"}, + {"from":"dev12.in0","to":"dev4.out0"}, + {"from":"dev13.in0","to":"dev5.out0"}, + {"from":"dev14.in0","to":"dev6.out0"}, + {"from":"dev15.in0","to":"dev7.out0"}, + {"from":"dev16.in0","to":"dev20.out0"}, + {"from":"dev17.in0","to":"dev18.out0"}, + {"from":"dev18.in0","to":"dev19.out0"}, + {"from":"dev20.in0","to":"dev19.out0"} + ] +} +); + +simcir.registerDevice('HalfAdder', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"Toggle","id":"dev0","x":96,"y":80,"label":"Toggle"}, + {"type":"DC","id":"dev1","x":48,"y":56,"label":"DC"}, + {"type":"AND","id":"dev2","x":192,"y":80,"label":"AND"}, + {"type":"XOR","id":"dev3","x":192,"y":32,"label":"XOR"}, + {"type":"In","id":"dev4","x":144,"y":32,"label":"A"}, + {"type":"In","id":"dev5","x":144,"y":80,"label":"B"}, + {"type":"Out","id":"dev6","x":240,"y":32,"label":"S"}, + {"type":"Out","id":"dev7","x":240,"y":80,"label":"C"}, + {"type":"Toggle","id":"dev8","x":96,"y":32,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev2.in0","to":"dev4.out0"}, + {"from":"dev2.in1","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev4.out0"}, + {"from":"dev3.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev8.out0"}, + {"from":"dev5.in0","to":"dev0.out0"}, + {"from":"dev6.in0","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev1.out0"} + ] +} +); + +simcir.registerDevice('FullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('4bitAdder', +{ + "width":280, + "height":480, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"FullAdder","id":"dev0","x":120,"y":72,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev1","x":120,"y":136,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev2","x":120,"y":200,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev3","x":120,"y":264,"label":"FullAdder"}, + {"type":"In","id":"dev4","x":40,"y":80,"label":"A0"}, + {"type":"In","id":"dev5","x":40,"y":128,"label":"A1"}, + {"type":"In","id":"dev6","x":40,"y":176,"label":"A2"}, + {"type":"In","id":"dev7","x":40,"y":224,"label":"A3"}, + {"type":"In","id":"dev8","x":40,"y":272,"label":"B0"}, + {"type":"In","id":"dev9","x":40,"y":320,"label":"B1"}, + {"type":"In","id":"dev10","x":40,"y":368,"label":"B2"}, + {"type":"In","id":"dev11","x":40,"y":416,"label":"B3"}, + {"type":"Out","id":"dev12","x":200,"y":72,"label":"S0"}, + {"type":"Out","id":"dev13","x":200,"y":120,"label":"S1"}, + {"type":"Out","id":"dev14","x":200,"y":168,"label":"S2"}, + {"type":"Out","id":"dev15","x":200,"y":216,"label":"S3"}, + {"type":"Out","id":"dev16","x":200,"y":280,"label":"Cout"}, + {"type":"In","id":"dev17","x":40,"y":24,"label":"Cin"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev17.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev0.in2","to":"dev8.out0"}, + {"from":"dev1.in0","to":"dev0.out1"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev9.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev6.out0"}, + {"from":"dev2.in2","to":"dev10.out0"}, + {"from":"dev3.in0","to":"dev2.out1"}, + {"from":"dev3.in1","to":"dev7.out0"}, + {"from":"dev3.in2","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev3.out0"}, + {"from":"dev16.in0","to":"dev3.out1"} + ] +} +); + +simcir.registerDevice('2to4BinaryDecoder', +{ + "width":400, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"AND","numInputs":3,"id":"dev0","x":280,"y":24,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev1","x":280,"y":72,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev2","x":280,"y":120,"label":"AND"}, + {"type":"NOT","id":"dev3","x":192,"y":48,"label":"NOT"}, + {"type":"AND","numInputs":3,"id":"dev4","x":280,"y":168,"label":"AND"}, + {"type":"NOT","id":"dev5","x":192,"y":96,"label":"NOT"}, + {"type":"In","id":"dev6","x":192,"y":176,"label":"OE"}, + {"type":"In","id":"dev7","x":128,"y":48,"label":"D0"}, + {"type":"In","id":"dev8","x":128,"y":96,"label":"D1"}, + {"type":"Toggle","id":"dev9","x":80,"y":48,"label":"Toggle"}, + {"type":"Toggle","id":"dev10","x":80,"y":96,"label":"Toggle"}, + {"type":"DC","id":"dev11","x":32,"y":96,"label":"DC"}, + {"type":"Out","id":"dev12","x":328,"y":24,"label":"A0"}, + {"type":"Out","id":"dev13","x":328,"y":72,"label":"A1"}, + {"type":"Out","id":"dev14","x":328,"y":120,"label":"A2"}, + {"type":"Out","id":"dev15","x":328,"y":168,"label":"A3"}, + {"type":"Toggle","id":"dev16","x":80,"y":144,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev0.in1","to":"dev5.out0"}, + {"from":"dev0.in2","to":"dev6.out0"}, + {"from":"dev1.in0","to":"dev7.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev6.out0"}, + {"from":"dev2.in0","to":"dev3.out0"}, + {"from":"dev2.in1","to":"dev8.out0"}, + {"from":"dev2.in2","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev7.out0"}, + {"from":"dev4.in1","to":"dev8.out0"}, + {"from":"dev4.in2","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev8.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev7.in0","to":"dev9.out0"}, + {"from":"dev8.in0","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev11.out0"}, + {"from":"dev10.in0","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev4.out0"}, + {"from":"dev16.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('3to8BinaryDecoder', +{ + "width":360, + "height":440, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":24,"y":144,"label":"D0"}, + {"type":"In","id":"dev1","x":24,"y":192,"label":"D1"}, + {"type":"In","id":"dev2","x":24,"y":240,"label":"D2"}, + {"type":"In","id":"dev3","x":24,"y":304,"label":"OE"}, + {"type":"NOT","id":"dev4","x":72,"y":240,"label":"NOT"}, + {"type":"AND","id":"dev5","x":120,"y":248,"label":"AND"}, + {"type":"AND","id":"dev6","x":120,"y":296,"label":"AND"}, + {"type":"2to4BinaryDecoder","id":"dev7","x":184,"y":144,"label":"2to4BinaryDecoder"}, + {"type":"2to4BinaryDecoder","id":"dev8","x":184,"y":224,"label":"2to4BinaryDecoder"}, + {"type":"Out","id":"dev9","x":296,"y":32,"label":"A0"}, + {"type":"Out","id":"dev10","x":296,"y":80,"label":"A1"}, + {"type":"Out","id":"dev11","x":296,"y":128,"label":"A2"}, + {"type":"Out","id":"dev12","x":296,"y":176,"label":"A3"}, + {"type":"Out","id":"dev13","x":296,"y":224,"label":"A4"}, + {"type":"Out","id":"dev14","x":296,"y":272,"label":"A5"}, + {"type":"Out","id":"dev15","x":296,"y":320,"label":"A6"}, + {"type":"Out","id":"dev16","x":296,"y":368,"label":"A7"} + ], + "connectors":[ + {"from":"dev4.in0","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev2.out0"}, + {"from":"dev6.in1","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev0.out0"}, + {"from":"dev7.in1","to":"dev1.out0"}, + {"from":"dev7.in2","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev7.out1"}, + {"from":"dev11.in0","to":"dev7.out2"}, + {"from":"dev12.in0","to":"dev7.out3"}, + {"from":"dev13.in0","to":"dev8.out0"}, + {"from":"dev14.in0","to":"dev8.out1"}, + {"from":"dev15.in0","to":"dev8.out2"}, + {"from":"dev16.in0","to":"dev8.out3"} + ] +} +); + +simcir.registerDevice('4to16BinaryDecoder', +{ + "width":440, + "height":360, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":32,"y":56,"label":"D0"}, + {"type":"In","id":"dev1","x":32,"y":104,"label":"D1"}, + {"type":"In","id":"dev2","x":32,"y":152,"label":"D2"}, + {"type":"In","id":"dev3","x":32,"y":200,"label":"D3"}, + {"type":"In","id":"dev4","x":32,"y":264,"label":"OE"}, + {"type":"NOT","id":"dev5","x":80,"y":200,"label":"NOT"}, + {"type":"AND","id":"dev6","x":136,"y":208,"label":"AND"}, + {"type":"AND","id":"dev7","x":136,"y":256,"label":"AND"}, + {"type":"3to8BinaryDecoder","id":"dev8","x":208,"y":32,"label":"3to8BinaryDecoder"}, + {"type":"3to8BinaryDecoder","id":"dev9","x":208,"y":184,"label":"3to8BinaryDecoder"}, + {"type":"BusOut","id":"dev10","x":320,"y":88,"label":"BusOut"}, + {"type":"BusOut","id":"dev11","x":320,"y":184,"label":"BusOut"}, + {"type":"Out","id":"dev12","x":376,"y":128,"label":"A0"}, + {"type":"Out","id":"dev13","x":376,"y":184,"label":"A1"} + ], + "connectors":[ + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev6.in1","to":"dev4.out0"}, + {"from":"dev7.in0","to":"dev3.out0"}, + {"from":"dev7.in1","to":"dev4.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev2.out0"}, + {"from":"dev8.in3","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev0.out0"}, + {"from":"dev9.in1","to":"dev1.out0"}, + {"from":"dev9.in2","to":"dev2.out0"}, + {"from":"dev9.in3","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev8.out0"}, + {"from":"dev10.in1","to":"dev8.out1"}, + {"from":"dev10.in2","to":"dev8.out2"}, + {"from":"dev10.in3","to":"dev8.out3"}, + {"from":"dev10.in4","to":"dev8.out4"}, + {"from":"dev10.in5","to":"dev8.out5"}, + {"from":"dev10.in6","to":"dev8.out6"}, + {"from":"dev10.in7","to":"dev8.out7"}, + {"from":"dev11.in0","to":"dev9.out0"}, + {"from":"dev11.in1","to":"dev9.out1"}, + {"from":"dev11.in2","to":"dev9.out2"}, + {"from":"dev11.in3","to":"dev9.out3"}, + {"from":"dev11.in4","to":"dev9.out4"}, + {"from":"dev11.in5","to":"dev9.out5"}, + {"from":"dev11.in6","to":"dev9.out6"}, + {"from":"dev11.in7","to":"dev9.out7"}, + {"from":"dev12.in0","to":"dev10.out0"}, + {"from":"dev13.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('OSCo', + { + "width":300, + "height":100, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"OSC","freq":0.5,"label":"CLK","id":"dev0","x":48,"y":64}, + {"type":"Delay","delay":1000,"id":"dev1","x":120,"y":72,"label":"Delay","state":{"direction":0}}, + {"type":"Out","id":"dev2","x":176,"y":64,"label":"Out"} + ], + "connectors":[ + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev1.out0"} + ] + + }); + +simcir.registerDevice('PassTransistor', + { + "width":400, + "height":300, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":72,"y":128,"label":"PMOS"}, + {"type":"NMOS","id":"dev1","x":272,"y":128,"label":"NMOS"}, + {"type":"In","id":"dev2","x":40,"y":32,"label":"PGate"}, + {"type":"In","id":"dev3","x":240,"y":32,"label":"NGate"}, + {"type":"In","id":"dev4","x":120,"y":224,"label":"In"}, + {"type":"Out","id":"dev5","x":200,"y":224,"label":"Out"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev1.in0","to":"dev3.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev5.in0","to":"dev0.out0"} + ] +}); \ No newline at end of file diff --git a/SRIP/Libraries/simcirjs/simcir.css b/SRIP/Libraries/simcirjs/simcir.css new file mode 100644 index 00000000..06c4aa04 --- /dev/null +++ b/SRIP/Libraries/simcirjs/simcir.css @@ -0,0 +1,218 @@ +/* + * SimcirJS + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-body { + display: inline-block; +} + +.simcir-workspace { + cursor: default; + overflow: hidden; + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +.simcir-pin-hole { + fill: #cccccc; + stroke: none; +} + +.simcir-toolbox { + fill: #eeeeee; +} + +.simcir-scrollbar { + fill: #cccccc; +} + +.simcir-scrollbar-bar { + fill: #aaaaaa; +} + +.simcir-scrollbar-bar:hover { + fill: #999999; +} + +.simcir-connector { + stroke-width: 1; + stroke: #0000ff; + stroke-linecap: round; +} + +.simcir-connector-hot { + /* stroke: #ff0000; */ +} + +.simcir-joint-point { + stroke-width: 3; +} + +.simcir-device { + fill: #cccccc; + stroke-width: 2; + stroke: #666666; +} + +.simcir-device-selected { + stroke: #0000ff; +} + +.simcir-device-label { + fill: #000000; + stroke-width: 0; + stroke: none; +} + +.simcir-selection-rect { + fill: none; + stroke-width: 1; + stroke: #0000ff; +} + +.simcir-node-type-in { + fill: #ffcc00; +} + +.simcir-node-type-out { + fill: #ffffff; +} + +.simcir-node { + stroke-width: 1; + stroke: #000000; +} + +.simcir-node-hot { + stroke: #ff0000; +} + +.simcir-node-hover { + stroke: #ffff00; +} + +.simcir-node-label { + fill: #000000; + stroke: none; +} + +.simcir-port { + stroke-width: 1; + stroke: #000000; +} + +.simcir-port-hole { + stroke: none; + fill: #000000; +} + +.simcir-json-data-area { + padding: 0px; + outline: none; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.simcir-dialog { + padding: 4px; + border-width: 2px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; + -webkit-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); +} + +.simcir-dialog-title { + margin-right: 4px; +} + +.simcir-dialog-close-button { + fill: #666666; + stroke: none; +} + +.simcir-dialog-close-button:hover { + fill: #888888; + stroke: none; +} + +.simcir-dialog-close-button-symbol { + fill: none; + stroke: #ffffff; + stroke-width: 2; +} + +.simcir-label-editor { + width: 100px; + border-width: 1px; + border-style: solid; + border-color: #cccccc; + background-color: #f0f0f0; + outline: none; +} + +.simcir-label-editor::-ms-clear { + display: none; + width: 0; + height: 0; +} + +/* simcir doc */ + +TABLE.simcir-doc-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-table, +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + padding: 16px; +} + +TABLE.simcir-doc-params-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-params-table, +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + padding: 2px; +} + +.simcir-doc-title { + font-weight: bold; + margin: 16px 0px 0px 0px; +} + +.simcir-doc-code { + padding: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #f0f0f0; +} diff --git a/SRIP/Libraries/simcirjs/simcir.js b/SRIP/Libraries/simcirjs/simcir.js new file mode 100644 index 00000000..91a68ca1 --- /dev/null +++ b/SRIP/Libraries/simcirjs/simcir.js @@ -0,0 +1,2726 @@ +// +// SimcirJS +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// In +// Out +// Joint + +/* + Changes made by Utkarsh Chhapekar: + + dataFinal is a global variable that now stores the dynamic data when the + circuit is generated. + + For debugging purposes find the console.log(); functions in this file, all + of these functions are commented so remove the // and run use console on browser + to debug. + Note: The ones which are not commented are part of the default debugging options + of SimCir. + +*/ + +'use strict'; + +var simcir = {}; + +var dataFinal; +// +// https://github.com/kazuhikoarase/lessQuery +// +simcir.$ = function() { + + //console.log("in first main function"); + + var debug = location.hash == '#debug'; + + var cacheIdKey = '.lessqCacheId'; + var cacheIdSeq = 0; + var cache = {}; + + var getCache = function(elm) { + var cacheId = elm[cacheIdKey]; + if (typeof cacheId == 'undefined') { + elm[cacheIdKey] = cacheId = cacheIdSeq++; + cache[cacheId] = debug? { e : elm } : {}; + } + return cache[cacheId]; + }; + + var hasCache = function(elm) { + return typeof elm[cacheIdKey] != 'undefined'; + }; + + if (debug) { + var lastKeys = {}; + var showCacheCount = function() { + var cnt = 0; + var keys = {}; + for (var k in cache) { + cnt += 1; + if (!lastKeys[k]) { + console.log(cache[k]); + } + keys[k] = true; + } + lastKeys = keys; + console.log('cacheCount:' + cnt); + window.setTimeout(showCacheCount, 5000); + }; + showCacheCount(); + } + + var removeCache = function(elm) { + + if (typeof elm[cacheIdKey] != 'undefined') { + + // remove all listeners + var cacheId = elm[cacheIdKey]; + var listenerMap = cache[cacheId].listenerMap; + for (var type in listenerMap) { + var listeners = listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + elm.removeEventListener(type, listeners[i]); + } + } + + // delete refs + delete elm[cacheIdKey]; + delete cache[cacheId]; + } + + while (elm.firstChild) { + removeCache(elm.firstChild); + elm.removeChild(elm.firstChild); + } + }; + + var getData = function(elm) { + if (!getCache(elm).data) { getCache(elm).data = {}; } + return getCache(elm).data; + }; + + var getListeners = function(elm, type) { + if (!getCache(elm).listenerMap) { + getCache(elm).listenerMap = {}; } + if (!getCache(elm).listenerMap[type]) { + getCache(elm).listenerMap[type] = []; } + return getCache(elm).listenerMap[type]; + }; + + // add / remove event listener. + var addEventListener = function(elm, type, listener, add) { + var listeners = getListeners(elm, type); + var newListeners = []; + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] != listener) { + newListeners.push(listeners[i]); + } + } + if (add) { newListeners.push(listener); } + getCache(elm).listenerMap[type] = newListeners; + return true; + }; + + var CustomEvent = { + preventDefault : function() { this._pD = true; }, + stopPropagation : function() { this._sP = true; }, + stopImmediatePropagation : function() { this._sIp = true; } + }; + + var trigger = function(elm, type, data) { + var event = { type : type, target : elm, currentTarget : null, + _pD : false, _sP : false, _sIp : false, __proto__ : CustomEvent }; + for (var e = elm; e != null; e = e.parentNode) { + if (!hasCache(e) ) { continue; } + if (!getCache(e).listenerMap) { continue; } + if (!getCache(e).listenerMap[type]) { continue; } + event.currentTarget = e; + var listeners = getCache(e).listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + listeners[i].call(e, event, data); + if (event._sIp) { return; } + } + if (event._sP) { return; } + } + }; + + var data = function(elm, kv) { + if (arguments.length == 2) { + if (typeof kv == 'string') return getData(elm)[kv]; + for (var k in kv) { getData(elm)[k] = kv[k]; } + } else if (arguments.length == 3) { + getData(elm)[kv] = arguments[2]; + } + return elm; + }; + + var extend = function(o1, o2) { + for (var k in o2) { o1[k] = o2[k]; } return o1; + }; + + var each = function(it, callback) { + if (typeof it.splice == 'function') { + for (var i = 0; i < it.length; i += 1) { callback(i, it[i]); } + } else { + for (var k in it) { callback(k, it[k]); } + } + }; + + var grep = function(list, accept) { + var newList = []; + for (var i = 0; i < list.length; i += 1) { + var item = list[i]; + if (accept(item) ) { + newList.push(item); + } + } + return newList; + }; + + var addClass = function(elm, className, add) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + var newClasses = ''; + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { continue; } + newClasses += ' ' + classes[i]; + } + if (add) { newClasses += ' ' + className; } + elm.setAttribute('class', newClasses); + }; + + var hasClass = function(elm, className) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { return true; } + } + return false; + }; + + var matches = function(elm, selector) { + if (elm.nodeType != 1) { + return false; + } else if (!selector) { + return true; + } + var sels = selector.split(/[,\s]+/g); + for (var i = 0; i < sels.length; i += 1) { + var sel = sels[i]; + if (sel.substring(0, 1) == '#') { + throw 'not supported:' + sel; + } else if (sel.substring(0, 1) == '.') { + if (hasClass(elm, sel.substring(1) ) ) { + return true; + } + } else { + if (elm.tagName.toUpperCase() == sel.toUpperCase() ) { + return true; + } + } + } + return false; + }; + + var parser = new window.DOMParser(); + + var html = function(html) { + var doc = parser.parseFromString( + '
' + html + '
', + 'text/xml').firstChild; + var elms = []; + while (doc.firstChild) { + elms.push(doc.firstChild); + doc.removeChild(doc.firstChild); + } + elms.__proto__ = fn; + return elms; + }; + + var pxToNum = function(px) { + if (typeof px != 'string' || px.length <= 2 || + px.charAt(px.length - 2) != 'p' || + px.charAt(px.length - 1) != 'x') { + throw 'illegal px:' + px; + } + return +px.substring(0, px.length - 2); + }; + + var buildQuery = function(data) { + var query = ''; + for (var k in data) { + if (query.length > 0) { + query += '&'; + } + query += window.encodeURIComponent(k); + query += '='; + query += window.encodeURIComponent(data[k]); + } + return query; + }; + + var parseResponse = function() { + + var contentType = this.getResponseHeader('content-type'); + if (contentType != null) { + contentType = contentType.replace(/\s*;.+$/, '').toLowerCase(); + } + + if (contentType == 'text/xml' || + contentType == 'application/xml') { + return parser.parseFromString(this.responseText, 'text/xml'); + } else if (contentType == 'text/json' || + contentType == 'application/json') { + return JSON.parse(this.responseText); + } else { + return this.response; + } + }; + + var ajax = function(params) { + + params = extend({ + url: '', + method : 'GET', + contentType : 'application/x-www-form-urlencoded;charset=UTF-8', + cache: true, + processData: true, + async : true + }, params); + + if (!params.async) { + // force async. + throw 'not supported.'; + } + + var method = params.method.toUpperCase(); + var data = null; + var contentType = params.contentType; + if (method == 'POST' || method == 'PUT') { + data = (typeof params.data == 'object' && params.processData)? + buildQuery(params.data) : params.data; + } else { + contentType = false; + } + + var xhr = params.xhr? params.xhr() : new window.XMLHttpRequest(); + xhr.open(method, params.url, params.async); + if (contentType !== false) { + xhr.setRequestHeader('Content-Type', contentType); + } + xhr.onreadystatechange = function() { + if(xhr.readyState == window.XMLHttpRequest.DONE) { + try { + if (xhr.status == 200) { + done.call(xhr, parseResponse.call(this) ); + } else { + fail.call(xhr); + } + } finally { + always.call(xhr); + } + } + }; + + // call later + window.setTimeout(function() { xhr.send(data); }, 0); + + // callbacks + var done = function(data) {}; + var fail = function() {}; + var always = function() {}; + + var $ = { + done : function(callback) { done = callback; return $; }, + fail : function(callback) { fail = callback; return $; }, + always : function(callback) { always = callback; return $; }, + abort : function() { xhr.abort(); return $; } + }; + return $; + }; + + // 1. for single element + var fn = { + attr : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.getAttribute(kv); + for (var k in kv) { this.setAttribute(k, kv[k]); } + } else if (arguments.length == 2) { + this.setAttribute(kv, arguments[1]); + } + return this; + }, + prop : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this[kv]; + for (var k in kv) { this[k] = kv[k]; } + } else if (arguments.length == 2) { + this[kv] = arguments[1]; + } + return this; + }, + css : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.style[kv]; + for (var k in kv) { this.style[k] = kv[k]; } + } else if (arguments.length == 2) { + this.style[kv] = arguments[1]; + } + return this; + }, + data : function(kv) { + var args = [ this ]; + for (var i = 0; i < arguments.length; i += 1) { + args.push(arguments[i]); + }; + return data.apply(null, args); + }, + val : function() { + if (arguments.length == 0) { + return this.value || ''; + } else if (arguments.length == 1) { + this.value = arguments[0]; + } + return this; + }, + on : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.addEventListener(types[i], listener); + addEventListener(this, types[i], listener, true); + } + return this; + }, + off : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.removeEventListener(types[i], listener); + addEventListener(this, types[i], listener, false); + } + return this; + }, + trigger : function(type, data) { + trigger(this, type, data); + return this; + }, + offset : function() { + var off = { left : 0, top : 0 }; + var base = null; + for (var e = this; e.parentNode != null; e = e.parentNode) { + if (e.offsetParent != null) { + base = e; + break; + } + } + if (base != null) { + for (var e = base; e.offsetParent != null; e = e.offsetParent) { + off.left += e.offsetLeft; + off.top += e.offsetTop; + } + } + for (var e = this; e.parentNode != null && + e != document.body; e = e.parentNode) { + off.left -= e.scrollLeft; + off.top -= e.scrollTop; + } + return off; + }, + append : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + this.appendChild(elms[i]); + } + return this; + }, + prepend : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + if (this.firstChild) { + this.insertBefore(elms[i], this.firstChild); + } else { + this.appendChild(elms[i]); + } + } + return this; + }, + insertBefore : function(elms) { + var elm = elms[0]; + elm.parentNode.insertBefore(this, elm); + return this; + }, + insertAfter : function(elms) { + var elm = elms[0]; + if (elm.nextSibling) { + elm.parentNode.insertBefore(this, elm.nextSibling); + } else { + elm.parentNode.appendChild(this); + } + return this; + }, + remove : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + removeCache(this); + return this; + }, + detach : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + return this; + }, + parent : function() { + return $(this.parentNode); + }, + closest : function(selector) { + for (var e = this; e != null; e = e.parentNode) { + if (matches(e, selector) ) { + return $(e); + } + } + return $(); + }, + find : function(selector) { + var elms = []; + var childNodes = this.querySelectorAll(selector); + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + }, + children : function(selector) { + var elms = []; + var childNodes = this.childNodes; + for (var i = 0; i < childNodes.length; i += 1) { + if (matches(childNodes.item(i), selector) ) { + elms.push(childNodes.item(i) ); + } + } + elms.__proto__ = fn; + return elms; + }, + index : function(selector) { + return Array.prototype.indexOf.call( + $(this).parent().children(selector), this); + }, + clone : function() { return $(this.cloneNode(true) ); }, + focus : function() { this.focus(); return this; }, + select : function() { this.select(); return this; }, + submit : function() { this.submit(); return this; }, + scrollLeft : function() { + if (arguments.length == 0) return this.scrollLeft; + this.scrollLeft = arguments[0]; return this; + }, + scrollTop : function() { + if (arguments.length == 0) return this.scrollTop; + this.scrollTop = arguments[0]; return this; + }, + html : function() { + if (arguments.length == 0) return this.innerHTML; + this.innerHTML = arguments[0]; return this; + }, + text : function() { + if (typeof this.textContent != 'undefined') { + if (arguments.length == 0) return this.textContent; + this.textContent = arguments[0]; return this; + } else { + if (arguments.length == 0) return this.innerText; + this.innerText = arguments[0]; return this; + } + }, + outerWidth : function(margin) { + var w = this.offsetWidth; + if (margin) { + var cs = window.getComputedStyle(this, null); + return w + pxToNum(cs.marginLeft) + pxToNum(cs.marginRight); + } + return w; + }, + innerWidth : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth); + }, + width : function() { + if (this == window) return this.innerWidth; + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth) - + pxToNum(cs.paddingLeft) - pxToNum(cs.paddingRight); + }, + outerHeight : function(margin) { + var h = this.offsetHeight; + if (margin) { + var cs = window.getComputedStyle(this, null); + return h + pxToNum(cs.marginTop) + pxToNum(cs.marginBottom); + } + return h; + }, + innerHeight : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth); + }, + height : function() { + if (this == window) return this.innerHeight; + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth) - + pxToNum(cs.paddingTop) - pxToNum(cs.paddingBottom); + }, + addClass : function(className) { + addClass(this, className, true); return this; + }, + removeClass : function(className) { + addClass(this, className, false); return this; + }, + hasClass : function(className) { + return hasClass(this, className); + } + }; + + // 2. to array + each(fn, function(name, func) { + fn[name] = function() { + var newRet = null; + for (var i = 0; i < this.length; i += 1) { + var elm = this[i]; + var ret = func.apply(elm, arguments); + if (elm !== ret) { + if (ret != null && ret.__proto__ == fn) { + if (newRet == null) { newRet = []; } + newRet = newRet.concat(ret); + } else { + return ret; + } + } + } + if (newRet != null) { + newRet.__proto__ = fn; + return newRet; + } + return this; + }; + }); + + // 3. for array + fn = extend(fn, { + each : function(callback) { + for (var i = 0; i < this.length; i += 1) { + callback.call(this[i], i); + } + return this; + }, + first : function() { + return $(this.length > 0? this[0] : null); + }, + last : function() { + return $(this.length > 0? this[this.length - 1] : null); + } + }); + + var $ = function(target) { + + if (typeof target == 'function') { + + // ready + return $(document).on('DOMContentLoaded', target); + + } else if (typeof target == 'string') { + + if (target.charAt(0) == '<') { + + // dom creation + return html(target); + + } else { + + // query + var childNodes = document.querySelectorAll(target); + var elms = []; + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + } + + } else if (typeof target == 'object' && target != null) { + + if (target.__proto__ == fn) { + return target; + } else { + var elms = []; + elms.push(target); + elms.__proto__ = fn; + return elms; + } + + } else { + + var elms = []; + elms.__proto__ = fn; + return elms; + } + }; + + return extend($, { + fn : fn, extend : extend, each : each, grep : grep, + data : data, ajax : ajax }); +}(); + +!function($s) { + //console.log("in second main function"); + var $ = $s.$; + + var createSVGElement = function(tagName) { + return $(document.createElementNS( + 'http://www.w3.org/2000/svg', tagName) ); + }; + + var createSVG = function(w, h) { + return createSVGElement('svg').attr({ + version: '1.1', + width: w, height: h, + viewBox: '0 0 ' + w + ' ' + h + }); + }; + + var graphics = function($target) { + var attr = {}; + var buf = ''; + var moveTo = function(x, y) { + buf += ' M ' + x + ' ' + y; + }; + var lineTo = function(x, y) { + buf += ' L ' + x + ' ' + y; + }; + var curveTo = function(x1, y1, x, y) { + buf += ' Q ' + x1 + ' ' + y1 + ' ' + x + ' ' + y; + }; + var closePath = function(close) { + if (close) { + // really close path. + buf += ' Z'; + } + $target.append(createSVGElement('path'). + attr('d', buf).attr(attr) ); + buf = ''; + }; + var drawRect = function(x, y, width, height) { + $target.append(createSVGElement('rect'). + attr({x: x, y: y, width: width, height: height}).attr(attr) ); + }; + var drawCircle = function(x, y, r) { + $target.append(createSVGElement('circle'). + attr({cx: x, cy: y, r: r}).attr(attr) ); + }; + return { + attr: attr, + moveTo: moveTo, + lineTo: lineTo, + curveTo: curveTo, + closePath: closePath, + drawRect: drawRect, + drawCircle: drawCircle + }; + }; + + var transform = function() { + var attrX = 'simcir-transform-x'; + var attrY = 'simcir-transform-y'; + var attrRotate = 'simcir-transform-rotate'; + var num = function($o, k) { + var v = $o.attr(k); + return v? +v : 0; + }; + return function($o, x, y, rotate) { + if (arguments.length >= 3) { + var transform = 'translate(' + x + ' ' + y + ')'; + if (rotate) { + transform += ' rotate(' + rotate + ')'; + } + $o.attr('transform', transform); + $o.attr(attrX, x); + $o.attr(attrY, y); + $o.attr(attrRotate, rotate); + } else if (arguments.length == 1) { + return {x: num($o, attrX), y: num($o, attrY), + rotate: num($o, attrRotate)}; + } + }; + }(); + + var offset = function($o) { + var x = 0; + var y = 0; + while ($o[0].nodeName != 'svg') { + var pos = transform($o); + x += pos.x; + y += pos.y; + $o = $o.parent(); + } + return {x: x, y: y}; + }; + + var enableEvents = function($o, enable) { + $o.css('pointer-events', enable? 'visiblePainted' : 'none'); + }; + + var disableSelection = function($o) { + $o.each(function() { + this.onselectstart = function() { return false; }; + }).css('-webkit-user-select', 'none'); + }; + + var controller = function() { + var id = 'controller'; + return function($ui, controller) { + if (arguments.length == 1) { + return $.data($ui[0], id); + } else if (arguments.length == 2) { + $.data($ui[0], id, controller); + } + }; + }(); + + var eventQueue = function() { + var delay = 50; // ms + var limit = 40; // ms + var _queue = null; + var postEvent = function(event) { + if (_queue == null) { + _queue = []; + } + _queue.push(event); + }; + var dispatchEvent = function() { + var queue = _queue; + _queue = null; + while (queue.length > 0) { + var e = queue.shift(); + e.target.trigger(e.type); + } + }; + var getTime = function() { + return new Date().getTime(); + }; + var timerHandler = function() { + var start = getTime(); + while (_queue != null && getTime() - start < limit) { + dispatchEvent(); + } + window.setTimeout(timerHandler, + Math.max(delay - limit, delay - (getTime() - start) ) ); + }; + timerHandler(); + return { + postEvent: postEvent + }; + }(); + + var unit = 16; + var fontSize = 12; + + var createLabel = function(text) { + return createSVGElement('text'). + text(text). + css('font-size', fontSize + 'px'); + }; + + var createNode = function(type, label, description, headless) { + var $node = createSVGElement('g'). + attr('simcir-node-type', type); + if (!headless) { + $node.attr('class', 'simcir-node'); + } + var node = createNodeController({ + $ui: $node, type: type, label: label, + description: description, headless: headless}); + if (type == 'in') { + controller($node, createInputNodeController(node) ); + } else if (type == 'out') { + controller($node, createOutputNodeController(node) ); + } else { + throw 'unknown type:' + type; + } + return $node; + }; + + var isActiveNode = function($o) { + return $o.closest('.simcir-node').length == 1 && + $o.closest('.simcir-toolbox').length == 0; + }; + + var createNodeController = function(node) { + var _value = null; + var setValue = function(value, force) { + if (_value === value && !force) { + return; + } + _value = value; + eventQueue.postEvent({target: node.$ui, type: 'nodeValueChange'}); + }; + var getValue = function() { + return _value; + }; + + if (!node.headless) { + + node.$ui.attr('class', 'simcir-node simcir-node-type-' + node.type); + + var $circle = createSVGElement('circle'). + attr({cx: 0, cy: 0, r: 4}); + node.$ui.on('mouseover', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.addClass('simcir-node-hover'); + } + }); + node.$ui.on('mouseout', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.removeClass('simcir-node-hover'); + } + }); + node.$ui.append($circle); + var appendLabel = function(text, align) { + var $label = createLabel(text). + attr('class', 'simcir-node-label'); + enableEvents($label, false); + if (align == 'right') { + $label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + $label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } + node.$ui.append($label); + }; + if (node.label) { + if (node.type == 'in') { + appendLabel(node.label, 'right'); + } else if (node.type == 'out') { + appendLabel(node.label, 'left'); + } + } + if (node.description) { + if (node.type == 'in') { + appendLabel(node.description, 'left'); + } else if (node.type == 'out') { + appendLabel(node.description, 'right'); + } + } + node.$ui.on('nodeValueChange', function(event) { + if (_value != null) { + node.$ui.addClass('simcir-node-hot'); + } else { + node.$ui.removeClass('simcir-node-hot'); + } + }); + } + + return $.extend(node, { + setValue: setValue, + getValue: getValue + }); + }; + + var createInputNodeController = function(node) { + var output = null; + var setOutput = function(outNode) { + output = outNode; + }; + var getOutput = function() { + return output; + }; + return $.extend(node, { + setOutput: setOutput, + getOutput: getOutput + }); + }; + + var createOutputNodeController = function(node) { + var inputs = []; + var super_setValue = node.setValue; + var setValue = function(value) { + super_setValue(value); + for (var i = 0; i < inputs.length; i += 1) { + inputs[i].setValue(value); + } + }; + var connectTo = function(inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + inNode.setOutput(node); + inputs.push(inNode); + inNode.setValue(node.getValue(), true); + }; + var disconnectFrom = function(inNode) { + if (inNode.getOutput() != node) { + throw 'not connected.'; + } + inNode.setOutput(null); + inNode.setValue(null, true); + inputs = $.grep(inputs, function(v) { + return v != inNode; + }); + }; + var getInputs = function() { + return inputs; + }; + return $.extend(node, { + setValue: setValue, + getInputs: getInputs, + connectTo: connectTo, + disconnectFrom: disconnectFrom + }); + }; + + var createDevice = function(deviceDef, headless, scope) { + headless = headless || false; + scope = scope || null; + var $dev = createSVGElement('g'); + if (!headless) { + $dev.attr('class', 'simcir-device'); + } + controller($dev, createDeviceController( + {$ui: $dev, deviceDef: deviceDef, + headless: headless, scope: scope, doc: null}) ); + var factory = factories[deviceDef.type]; + if (factory) { + factory(controller($dev) ); + } + if (!headless) { + controller($dev).createUI(); + } + return $dev; + }; + + var createDeviceController = function(device) { + var inputs = []; + var outputs = []; + var addInput = function(label, description) { + var $node = createNode('in', label, description, device.headless); + $node.on('nodeValueChange', function(event) { + device.$ui.trigger('inputValueChange'); + }); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + inputs.push(node); + return node; + }; + var addOutput = function(label, description) { + var $node = createNode('out', label, description, device.headless); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + outputs.push(node); + return node; + }; + var getInputs = function() { + return inputs; + }; + var getOutputs = function() { + return outputs; + }; + var disconnectAll = function() { + $.each(getInputs(), function(i, inNode) { + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + }); + $.each(getOutputs(), function(i, outNode) { + $.each(outNode.getInputs(), function(i, inNode) { + outNode.disconnectFrom(inNode); + }); + }); + }; + device.$ui.on('dispose', function() { + $.each(getInputs(), function(i, inNode) { + inNode.$ui.remove(); + }); + $.each(getOutputs(), function(i, outNode) { + outNode.$ui.remove(); + }); + device.$ui.remove(); + } ); + + var selected = false; + var setSelected = function(value) { + selected = value; + device.$ui.trigger('deviceSelect'); + }; + var isSelected = function() { + return selected; + }; + + var label = device.deviceDef.label; + var defaultLabel = device.deviceDef.type; + if (typeof label == 'undefined') { + label = defaultLabel; + } + var setLabel = function(value) { + value = value.replace(/^\s+|\s+$/g, ''); + label = value || defaultLabel; + device.$ui.trigger('deviceLabelChange'); + }; + var getLabel = function() { + return label; + }; + + var getSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var getMOSSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var layoutUI = function() { + + var size = device.getSize(); + var w = size.width; + var h = size.height; + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: 0, width: w, height: h}); + + var pitch = device.halfPitch? unit / 2 : unit; + var layoutNodes = function(nodes, x) { + var offset = (h - pitch * (nodes.length - 1) ) / 2; + $.each(nodes, function(i, node) { + transform(node.$ui, x, pitch * i + offset); + }); + }; + layoutNodes(getInputs(), 0); + layoutNodes(getOutputs(), w); + + device.$ui.children('.simcir-device-label'). + attr({x: w / 2, y: h + fontSize}); + }; + + var createUI = function() { + + device.$ui.attr('class', 'simcir-device'); + device.$ui.on('deviceSelect', function() { + if (selected) { + $(this).addClass('simcir-device-selected'); + } else { + $(this).removeClass('simcir-device-selected'); + } + }); + + var $body = createSVGElement('rect'). + attr('class', 'simcir-device-body'). + attr('rx', 2).attr('ry', 2); + device.$ui.prepend($body); + + var $label = createLabel(label). + attr('class', 'simcir-device-label'). + attr('text-anchor', 'middle'); + device.$ui.on('deviceLabelChange', function() { + $label.text(getLabel() ); + }); + + var label_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var $workspace = $(event.target).closest('.simcir-workspace'); + if (!controller($workspace).data().editable) { + return; + } + var title = 'Enter device name '; + var $labelEditor = $(''). + addClass('simcir-label-editor'). + val($label.text() ). + on('keydown', function(event) { + if (event.keyCode == 13) { + // ENTER + setLabel($(this).val() ); + $dlg.remove(); + } else if (event.keyCode == 27) { + // ESC + $dlg.remove(); + } + } ); + var $placeHolder = $('
'). + append($labelEditor); + var $dlg = showDialog(title, $placeHolder); + $labelEditor.focus(); + }; + device.$ui.on('deviceAdd', function() { + $label.on('dblclick', label_dblClickHandler); + } ); + device.$ui.on('deviceRemove', function() { + $label.off('dblclick', label_dblClickHandler); + } ); + device.$ui.append($label); + + layoutUI(); + + }; + + var getState = function() { return null; }; + + return $.extend(device, { + addInput: addInput, + addOutput: addOutput, + getInputs: getInputs, + getOutputs: getOutputs, + disconnectAll: disconnectAll, + setSelected: setSelected, + isSelected: isSelected, + getLabel: getLabel, + halfPitch: false, + getSize: getSize, + getMOSSize: getMOSSize, + createUI: createUI, + layoutUI: layoutUI, + getState: getState + }); + }; + + var createConnector = function(x1, y1, x2, y2) { + return createSVGElement('path'). + attr('d', 'M ' + x1 + ' ' + y1 + ' L ' + x2 + ' ' + y2). + attr('class', 'simcir-connector'); + }; + + var connect = function($node1, $node2) { + var type1 = $node1.attr('simcir-node-type'); + var type2 = $node2.attr('simcir-node-type'); + if (type1 == 'in' && type2 == 'out') { + controller($node2).connectTo(controller($node1) ); + } else if (type1 == 'out' && type2 == 'in') { + controller($node1).connectTo(controller($node2) ); + } + }; + + var buildCircuit = function(data, headless, scope) { + var $devices = []; + var $devMap = {}; + var getNode = function(path) { + if (!path.match(/^(\w+)\.(in|out)([0-9]+)$/g) ) { + throw 'unknown path:' + path; + } + var devId = RegExp.$1; + var type = RegExp.$2; + var index = +RegExp.$3; + return (type == 'in')? + controller($devMap[devId]).getInputs()[index] : + controller($devMap[devId]).getOutputs()[index]; + }; + $.each(data.devices, function(i, deviceDef) { + var $dev = createDevice(deviceDef, headless, scope); + transform($dev, deviceDef.x, deviceDef.y); + $devices.push($dev); + $devMap[deviceDef.id] = $dev; + }); + $.each(data.connectors, function(i, conn) { + var nodeFrom = getNode(conn.from); + var nodeTo = getNode(conn.to); + if (nodeFrom && nodeTo) { + connect(nodeFrom.$ui, nodeTo.$ui); + } + }); + return $devices; + }; + + var dialogManager = function() { + var dialogs = []; + var updateDialogs = function($dlg, remove) { + var newDialogs = []; + $.each(dialogs, function(i) { + if (dialogs[i] != $dlg) { + newDialogs.push(dialogs[i]); + } + }); + if (!remove) { + newDialogs.push($dlg); + } + // renumber z-index + $.each(newDialogs, function(i) { + newDialogs[i].css('z-index', '' + (i + 1) ); + }); + dialogs = newDialogs; + }; + return { + add : function($dlg) { + updateDialogs($dlg); + }, + remove : function($dlg) { + updateDialogs($dlg, true); + }, + toFront : function($dlg) { + updateDialogs($dlg); + } + }; + }(); + + var showDialog = function(title, $content) { + var $closeButton = function() { + var r = 16; + var pad = 4; + var $btn = createSVG(r, r). + attr('class', 'simcir-dialog-close-button'); + var g = graphics($btn); + g.drawRect(0, 0, r, r); + g.attr['class'] = 'simcir-dialog-close-button-symbol'; + g.moveTo(pad, pad); + g.lineTo(r - pad, r - pad); + g.closePath(); + g.moveTo(r - pad, pad); + g.lineTo(pad, r - pad); + g.closePath(); + return $btn; + }(); + var $title = $('
'). + addClass('simcir-dialog-title'). + text(title). + css('cursor', 'default'). + on('mousedown', function(event) { + event.preventDefault(); + }); + var $dlg = $('
'). + addClass('simcir-dialog'). + css({position:'absolute'}). + append($title.css('float', 'left') ). + append($closeButton.css('float', 'right') ). + append($('
').css('clear', 'both') ). + append($content); + $('BODY').append($dlg); + dialogManager.add($dlg); + var dragPoint = null; + var dlg_mouseDownHandler = function(event) { + if (!$(event.target).hasClass('simcir-dialog') && + !$(event.target).hasClass('simcir-dialog-title') ) { + return; + } + event.preventDefault(); + dialogManager.toFront($dlg); + var off = $dlg.offset(); + dragPoint = { + x: event.pageX - off.left, + y: event.pageY - off.top}; + $(document).on('mousemove', dlg_mouseMoveHandler); + $(document).on('mouseup', dlg_mouseUpHandler); + }; + var dlg_mouseMoveHandler = function(event) { + moveTo( + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + var dlg_mouseUpHandler = function(event) { + $(document).off('mousemove', dlg_mouseMoveHandler); + $(document).off('mouseup', dlg_mouseUpHandler); + }; + $dlg.on('mousedown', dlg_mouseDownHandler); + $closeButton.on('mousedown', function() { + $dlg.trigger('close'); + $dlg.remove(); + dialogManager.remove($dlg); + }); + var w = $dlg.width(); + var h = $dlg.height(); + var cw = $(window).width(); + var ch = $(window).height(); + var getProp = function(id) { + return $('HTML')[id]() || $('BODY')[id](); + }; + var x = (cw - w) / 2 + getProp('scrollLeft'); + var y = (ch - h) / 2 + getProp('scrollTop'); + var moveTo = function(x, y) { + $dlg.css({left: x + 'px', top: y + 'px'}); + }; + moveTo(x, y); + return $dlg; + }; + + var createDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + $ports.sort(function($p1, $p2) { + var x1 = controller($p1).deviceDef.x; + var y1 = controller($p1).deviceDef.y; + var x2 = controller($p2).deviceDef.x; + var y2 = controller($p2).deviceDef.y; + if (x1 == x2) { + return (y1 < y2)? -1 : 1; + } + return (x1 < x2)? -1 : 1; + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(portDef.label, + getDesc(outPort.getInputs()[0]) ); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(portDef.label, + getDesc(inPort.getOutput() ) ); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
'), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + }; + }; + + var createCustomLayoutDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + var intfs = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(); + intfs.push({ node : inPort, label : portDef.label, + desc : getDesc(outPort.getInputs()[0]) }); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(); + intfs.push({ node : outPort, label : portDef.label, + desc : getDesc(inPort.getOutput() ) }); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var layout = data.layout; + var cols = layout.cols; + var rows = layout.rows; + rows = ~~( (Math.max(1, rows) + 1) / 2) * 2; + cols = ~~( (Math.max(1, cols) + 1) / 2) * 2; + var updateIntf = function(intf, x, y, align) { + transform(intf.node.$ui, x, y); + if (!intf.$label) { + intf.$label = createLabel(intf.label). + attr('class', 'simcir-node-label'); + enableEvents(intf.$label, false); + intf.node.$ui.append(intf.$label); + } + if (align == 'right') { + intf.$label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + intf.$label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } else if (align == 'top') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', -6); + } else if (align == 'bottom') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', fontSize + 6); + } + }; + var doLayout = function() { + var x = 0; + var y = 0; + var w = unit * cols / 2; + var h = unit * rows / 2; + device.$ui.children('.simcir-device-label'). + attr({y : y + h + fontSize}); + device.$ui.children('.simcir-device-body'). + attr({x: x, y: y, width: w, height: h}); + $.each(intfs, function(i, intf) { + if (layout.nodes[intf.label] && + layout.nodes[intf.label].match(/^([TBLR])([0-9]+)$/) ) { + var off = +RegExp.$2 * unit / 2; + switch(RegExp.$1) { + case 'T' : updateIntf(intf, x + off, y, 'bottom'); break; + case 'B' : updateIntf(intf, x + off, y + h, 'top'); break; + case 'L' : updateIntf(intf, x, y + off, 'right'); break; + case 'R' : updateIntf(intf, x + w, y + off, 'left'); break; + } + } else { + transform(intf.node.$ui, 0, 0); + } + }); + }; + device.getSize = function() { + return {width: unit * cols / 2, height: unit * rows / 2}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + if (data.layout.hideLabelOnWorkspace) { + device.$ui.on('deviceAdd', function() { + device.$ui.children('.simcir-device-label').css('display', 'none'); + }).on('deviceRemove', function() { + device.$ui.children('.simcir-device-label').css('display', ''); + }); + } + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
'), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + doLayout(); + }; + }; + }; + + var factories = {}; + var defaultToolbox = []; + var registerDevice = function(type, factory, deprecated) { + if (typeof factory == 'object') { + if (typeof factory.layout == 'object') { + factory = createCustomLayoutDeviceRefFactory(factory); + } else { + factory = createDeviceRefFactory(factory); + } + } + factories[type] = factory; + if (!deprecated) { + defaultToolbox.push({type: type}); + } + }; + + var createScrollbar = function() { + + // vertical only. + var _value = 0; + var _min = 0; + var _max = 0; + var _barSize = 0; + var _width = 0; + var _height = 0; + + var $body = createSVGElement('rect'); + var $bar = createSVGElement('g'). + append(createSVGElement('rect') ). + attr('class', 'simcir-scrollbar-bar'); + var $scrollbar = createSVGElement('g'). + attr('class', 'simcir-scrollbar'). + append($body).append($bar). + on('unitup', function(event) { + setValue(_value - unit * 2); + }).on('unitdown', function(event) { + setValue(_value + unit * 2); + }).on('rollup', function(event) { + setValue(_value - _barSize); + }).on('rolldown', function(event) { + setValue(_value + _barSize); + }); + + var dragPoint = null; + var bar_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var pos = transform($bar); + dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + $(document).on('mousemove', bar_mouseMoveHandler); + $(document).on('mouseup', bar_mouseUpHandler); + }; + var bar_mouseMoveHandler = function(event) { + calc(function(unitSize) { + setValue( (event.pageY - dragPoint.y) / unitSize); + }); + }; + var bar_mouseUpHandler = function(event) { + $(document).off('mousemove', bar_mouseMoveHandler); + $(document).off('mouseup', bar_mouseUpHandler); + }; + $bar.on('mousedown', bar_mouseDownHandler); + var body_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var off = $scrollbar.parent('svg').offset(); + var pos = transform($scrollbar); + var y = event.pageY - off.top - pos.y; + var barPos = transform($bar); + if (y < barPos.y) { + $scrollbar.trigger('rollup'); + } else { + $scrollbar.trigger('rolldown'); + } + }; + $body.on('mousedown', body_mouseDownHandler); + + var setSize = function(width, height) { + _width = width; + _height = height; + layout(); + }; + var layout = function() { + + $body.attr({x: 0, y: 0, width: _width, height: _height}); + + var visible = _max - _min > _barSize; + $bar.css('display', visible? 'inline' : 'none'); + if (!visible) { + return; + } + calc(function(unitSize) { + $bar.children('rect'). + attr({x: 0, y: 0, width: _width, height: _barSize * unitSize}); + transform($bar, 0, _value * unitSize); + }); + }; + var calc = function(f) { + f(_height / (_max - _min) ); + }; + var setValue = function(value) { + setValues(value, _min, _max, _barSize); + }; + var setValues = function(value, min, max, barSize) { + value = Math.max(min, Math.min(value, max - barSize) ); + var changed = (value != _value); + _value = value; + _min = min; + _max = max; + _barSize = barSize; + layout(); + if (changed) { + $scrollbar.trigger('scrollValueChange'); + } + }; + var getValue = function() { + return _value; + }; + controller($scrollbar, { + setSize: setSize, + setValues: setValues, + getValue: getValue + }); + return $scrollbar; + }; + + var getUniqueId = function() { + var uniqueIdCount = 0; + return function() { + return 'simcir-id' + uniqueIdCount++; + }; + }(); + + var createWorkspace = function(data) { + + //console.log("In create workspace function"); + data = $.extend({ + width: 400, + height: 200, + showToolbox: true, + editable: true, + toolbox: defaultToolbox, + devices: [], + connectors: [], + }, data); + + var scope = {}; + + var workspaceWidth = data.width; + var workspaceHeight = data.height; + var barWidth = unit; + var toolboxWidth = data.showToolbox? unit * 6 + barWidth : 0; + + var connectorsValid = true; + var connectorsValidator = function() { + if (!connectorsValid) { + updateConnectors(); + connectorsValid = true; + } + }; + + var $workspace = createSVG( + workspaceWidth, workspaceHeight). + attr('class', 'simcir-workspace'). + on('nodeValueChange', function(event) { + connectorsValid = false; + window.setTimeout(connectorsValidator, 0); + }). + on('dispose', function() { + $(this).find('.simcir-device').trigger('dispose'); + $toolboxPane.remove(); + $workspace.remove(); + }); + + disableSelection($workspace); + + var $defs = createSVGElement('defs'); + $workspace.append($defs); + + !function() { + + // fill with pin hole pattern. + var patId = getUniqueId(); + var pitch = unit / 2; + var w = workspaceWidth - toolboxWidth; + var h = workspaceHeight; + + $defs.append(createSVGElement('pattern'). + attr({id: patId, x: 0, y: 0, + width: pitch / w, height: pitch / h}).append( + createSVGElement('rect').attr('class', 'simcir-pin-hole'). + attr({x: 0, y: 0, width: 1, height: 1}) ) ); + + $workspace.append(createSVGElement('rect'). + attr({x: toolboxWidth, y: 0, width: w, height: h}). + css({fill: 'url(#' + patId + ')'}) ); + }(); + + var $toolboxDevicePane = createSVGElement('g'); + var $scrollbar = createScrollbar(); + $scrollbar.on('scrollValueChange', function(event) { + transform($toolboxDevicePane, 0, + -controller($scrollbar).getValue() ); + }); + controller($scrollbar).setSize(barWidth, workspaceHeight); + transform($scrollbar, toolboxWidth - barWidth, 0); + var $toolboxPane = createSVGElement('g'). + attr('class', 'simcir-toolbox'). + append(createSVGElement('rect'). + attr({x: 0, y: 0, + width: toolboxWidth, + height: workspaceHeight}) ). + append($toolboxDevicePane). + append($scrollbar).on('wheel', function(event) { + event.preventDefault(); + var oe = event.originalEvent || event; + if (oe.deltaY < 0) { + $scrollbar.trigger('unitup'); + } else if (oe.deltaY > 0) { + $scrollbar.trigger('unitdown'); + } + }); + + var $devicePane = createSVGElement('g'); + transform($devicePane, toolboxWidth, 0); + var $connectorPane = createSVGElement('g'); + var $temporaryPane = createSVGElement('g'); + + enableEvents($connectorPane, false); + enableEvents($temporaryPane, false); + + if (data.showToolbox) { + $workspace.append($toolboxPane); + } + $workspace.append($devicePane); + $workspace.append($connectorPane); + $workspace.append($temporaryPane); + + var addDevice = function($dev) { + $devicePane.append($dev); + $dev.trigger('deviceAdd'); + }; + + var removeDevice = function($dev) { + $dev.trigger('deviceRemove'); + // before remove, disconnect all + controller($dev).disconnectAll(); + $dev.trigger('dispose'); + updateConnectors(); + }; + + var disconnect = function($inNode) { + var inNode = controller($inNode); + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + updateConnectors(); + }; + + var updateConnectors = function() { + $connectorPane.children().remove(); + $devicePane.children('.simcir-device').each(function() { + var device = controller($(this) ); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + var p1 = offset(inNode.$ui); + var p2 = offset(inNode.getOutput().$ui); + var $conn = createConnector(p1.x, p1.y, p2.x, p2.y); + if (inNode.getOutput().getValue() != null) { + $conn.addClass('simcir-connector-hot'); + } + $connectorPane.append($conn); + } + }); + }); + }; + + var loadToolbox = function(data) { + var vgap = 8; + var y = vgap; + $.each(data.toolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + $toolboxDevicePane.append($dev); + var size = controller($dev).getSize(); + transform($dev, (toolboxWidth - barWidth - size.width) / 2, y); + y += (size.height + fontSize + vgap); + }); + controller($scrollbar).setValues(0, 0, y, workspaceHeight); + }; + + var getData = function() { + //console.log("in getData function"); + // renumber all id + var devIdCount = 0; + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + var devId = 'dev' + devIdCount++; + device.id = devId; + $.each(device.getInputs(), function(i, node) { + node.id = devId + '.in' + i; + }); + $.each(device.getOutputs(), function(i, node) { + node.id = devId + '.out' + i; + }); + }); + + var toolbox = []; + var devices = []; + var connectors = []; + var clone = function(obj) { + return JSON.parse(JSON.stringify(obj) ); + }; + $toolboxDevicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + toolbox.push(device.deviceDef); + }); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + connectors.push({from:inNode.id, to:inNode.getOutput().id}); + } + }); + var pos = transform($dev); + var deviceDef = clone(device.deviceDef); + deviceDef.id = device.id; + deviceDef.x = pos.x; + deviceDef.y = pos.y; + deviceDef.label = device.getLabel(); + var state = device.getState(); + if (state != null) { + deviceDef.state = state; + } + devices.push(deviceDef); + }); + return { + width: data.width, + height: data.height, + showToolbox: data.showToolbox, + editable: data.editable, + toolbox: toolbox, + devices: devices, + connectors: connectors + }; + }; + var getText = function() { + //console.log("In getText function"); + + /*global dataFinal*/ + dataFinal = getData(); + var data = getData(); + + var buf = ''; + var print = function(s) { + buf += s; + }; + var println = function(s) { + print(s); + buf += '\r\n'; + }; + var printArray = function(array) { + $.each(array, function(i, item) { + println(' ' + JSON.stringify(item). + replace(//g, '\\u003e') + + (i + 1 < array.length? ',' : '') ); + }); + }; + println('{'); + println(' "width":' + data.width + ','); + println(' "height":' + data.height + ','); + println(' "showToolbox":' + data.showToolbox + ','); + println(' "toolbox":['); + printArray(data.toolbox); + println(' ],'); + println(' "devices":['); + printArray(data.devices); + println(' ],'); + println(' "connectors":['); + printArray(data.connectors); + println(' ]'); + print('}'); + return buf; + }; + + //------------------------------------------- + // mouse operations + + var dragMoveHandler = null; + var dragCompleteHandler = null; + + var adjustDevice = function($dev) { + //console.log("In adjust"); + var pitch = unit / 2; + var adjust = function(v) { return Math.round(v / pitch) * pitch; }; + var pos = transform($dev); + var size = controller($dev).getSize(); + var x = Math.max(0, Math.min(pos.x, + workspaceWidth - toolboxWidth - size.width) ); + var y = Math.max(0, Math.min(pos.y, + workspaceHeight - size.height) ); + transform($dev, adjust(x), adjust(y) ); + //deselectAll(); + getText(); + }; + + var beginConnect = function(event, $target) { + var $srcNode = $target.closest('.simcir-node'); + var off = $workspace.offset(); + var pos = offset($srcNode); + if ($srcNode.attr('simcir-node-type') == 'in') { + disconnect($srcNode); + } + dragMoveHandler = function(event) { + var x = event.pageX - off.left; + var y = event.pageY - off.top; + $temporaryPane.children().remove(); + $temporaryPane.append(createConnector(pos.x, pos.y, x, y) ); + }; + dragCompleteHandler = function(event) { + //console.log("drag connection complete"); + $temporaryPane.children().remove(); + var $dst = $(event.target); + if (isActiveNode($dst) ) { + var $dstNode = $dst.closest('.simcir-node'); + connect($srcNode, $dstNode); + updateConnectors(); + } + getText(); + }; + }; + + var beginNewDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = offset($dev); + $dev = createDevice(controller($dev).deviceDef, false, scope); + transform($dev, pos.x, pos.y); + $temporaryPane.append($dev); + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + transform($dev, + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete newdev"); + var $target = $(event.target); + if ($target.closest('.simcir-toolbox').length == 0) { + $dev.detach(); + var pos = transform($dev); + transform($dev, pos.x - toolboxWidth, pos.y); + adjustDevice($dev); + addDevice($dev); + } else { + $dev.trigger('dispose'); + } + getText(); + }; + }; + + var $selectedDevices = []; + var addSelected = function($dev) { + //console.log("selected"); + controller($dev).setSelected(true); + $selectedDevices.push($dev); + }; + var deselectAll = function() { + //console.log("deselectAll"); + $devicePane.children('.simcir-device').each(function() { + controller($(this) ).setSelected(false); + }); + $selectedDevices = []; + }; + + var beginMoveDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = transform($dev); + if (!controller($dev).isSelected() ) { + deselectAll(); + addSelected($dev); + // to front. + $dev.parent().append($dev.detach() ); + } + + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + // disable events while dragging. + enableEvents($dev, false); + var curPos = transform($dev); + var deltaPos = { + x: event.pageX - dragPoint.x - curPos.x, + y: event.pageY - dragPoint.y - curPos.y}; + $.each($selectedDevices, function(i, $dev) { + var curPos = transform($dev); + transform($dev, + curPos.x + deltaPos.x, + curPos.y + deltaPos.y); + }); + updateConnectors(); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete dev"); + var $target = $(event.target); + enableEvents($dev, true); + $.each($selectedDevices, function(i, $dev) { + if ($target.closest('.simcir-toolbox').length == 0) { + adjustDevice($dev); + updateConnectors(); + } else { + removeDevice($dev); + } + }); + getText(); + }; + }; + + var beginSelectDevice = function(event, $target) { + var intersect = function(rect1, rect2) { + return !( + rect1.x > rect2.x + rect2.width || + rect1.y > rect2.y + rect2.height || + rect1.x + rect1.width < rect2.x || + rect1.y + rect1.height < rect2.y); + }; + var pointToRect = function(p1, p2) { + return { + x: Math.min(p1.x, p2.x), + y: Math.min(p1.y, p2.y), + width: Math.abs(p1.x - p2.x), + height: Math.abs(p1.y - p2.y)}; + }; + deselectAll(); + var off = $workspace.offset(); + var pos = offset($devicePane); + var p1 = {x: event.pageX - off.left, y: event.pageY - off.top}; + dragMoveHandler = function(event) { + deselectAll(); + var p2 = {x: event.pageX - off.left, y: event.pageY - off.top}; + var selRect = pointToRect(p1, p2); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var devPos = transform($dev); + var devSize = controller($dev).getSize(); + var devRect = { + x: devPos.x + pos.x, + y: devPos.y + pos.y, + width: devSize.width, + height: devSize.height}; + if (intersect(selRect, devRect) ) { + addSelected($dev); + } + }); + $temporaryPane.children().remove(); + $temporaryPane.append(createSVGElement('rect'). + attr(selRect). + attr('class', 'simcir-selection-rect') ); + }; + }; + + var mouseDownHandler = function(event) { + //console.log("Mouse down"); + event.preventDefault(); + event.stopPropagation(); + var $target = $(event.target); + if (!data.editable) { + return; + } + if (isActiveNode($target) ) { + beginConnect(event, $target); + } else if ($target.closest('.simcir-device').length == 1) { + if ($target.closest('.simcir-toolbox').length == 1) { + beginNewDevice(event, $target); + } else { + beginMoveDevice(event, $target); + } + } else { + beginSelectDevice(event, $target); + } + $(document).on('mousemove', mouseMoveHandler); + $(document).on('mouseup', mouseUpHandler); + }; + var mouseMoveHandler = function(event) { + if (dragMoveHandler != null) { + dragMoveHandler(event); + } + }; + var mouseUpHandler = function(event) { + //console.log("Mouse up"); + if (dragCompleteHandler != null) { + dragCompleteHandler(event); + } + dragMoveHandler = null; + dragCompleteHandler = null; + $devicePane.children('.simcir-device').each(function() { + enableEvents($(this), true); + }); + $temporaryPane.children().remove(); + $(document).off('mousemove', mouseMoveHandler); + $(document).off('mouseup', mouseUpHandler); + getText(); + }; + $workspace.on('mousedown', mouseDownHandler); + + //------------------------------------------- + // + + loadToolbox(data); + $.each(buildCircuit(data, false, scope), function(i, $dev) { + addDevice($dev); + }); + updateConnectors(); + controller($workspace, { + data: getData, + text: getText + }); + getText(); + return $workspace; + }; + + var clearSimcir = function($placeHolder) { + $placeHolder = $($placeHolder[0]); + $placeHolder.find('.simcir-workspace').trigger('dispose'); + $placeHolder.children().remove(); + return $placeHolder; + }; + + var setupSimcir = function($placeHolder, data) { + + $placeHolder = clearSimcir($placeHolder); + + var $workspace = simcir.createWorkspace(data); + var $dataArea = $(''). + addClass('simcir-json-data-area'). + attr('readonly', 'readonly'). + css('width', $workspace.attr('width') + 'px'). + css('height', $workspace.attr('height') + 'px'); + var showData = false; + var toggle = function() + { + $workspace.css('display', !showData? 'inline' : 'none'); + $dataArea.css('display', showData? 'inline' : 'none'); + if (showData) { + $dataArea.val(controller($workspace).text() ).focus(); + } + showData = !showData; + }; + $placeHolder.text(''); + $placeHolder.append($('
'). + addClass('simcir-body'). + append($workspace). + append($dataArea). + on('click', function(event) { + if (event.ctrlKey || event.metaKey) { + toggle(); + } + })); + toggle(); + return $placeHolder; + }; + + var setupSimcirDoc = function($placeHolder) { + var $table = $('
'). + addClass('simcir-doc-table'); + $.each(defaultToolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + var device = controller($dev); + if (!device.doc) { + return; + } + var doc = $.extend({description: '', params: []},device.doc); + var size = device.getSize(); + + var $tr = $(''); + var hgap = 32; + var vgap = 8; + var $view = createSVG(size.width + hgap * 2, + size.height + vgap * 2 + fontSize); + var $dev = createDevice(deviceDef); + transform($dev, hgap, vgap); + + $view.append($dev); + $tr.append($('').css('text-align', 'center').append($view) ); + var $desc = $(''); + $tr.append($desc); + + if (doc.description) { + $desc.append($(''). + text(doc.description) ); + } + + $desc.append($('
Params
').addClass('simcir-doc-title') ); + var $paramsTable = $('
'). + addClass('simcir-doc-params-table'); + $paramsTable.children('tbody').append($(''). + append($('Name') ). + append($('Type') ). + append($('Default') ). + append($('Description') ) ); + $paramsTable.children('tbody').append($(''). + append($('type') ). + append($('string') ). + append($('-'). + css('text-align', 'center') ). + append($('"' + deviceDef.type + '"') ) ); + if (!doc.labelless) { + $paramsTable.children('tbody').append($(''). + append($('label') ). + append($('string') ). + append($('same with type').css('text-align', 'center') ). + append($('label for a device.') ) ); + } + if (doc.params) { + $.each(doc.params, function(i, param) { + $paramsTable.children('tbody').append($(''). + append($('').text(param.name) ). + append($('').text(param.type) ). + append($('').css('text-align', 'center'). + text(param.defaultValue) ). + append($('').text(param.description) ) ); + }); + } + $desc.append($paramsTable); + + if (doc.code) { + $desc.append($('
Code
').addClass('simcir-doc-title') ); + $desc.append($('
'). + addClass('simcir-doc-code').text(doc.code) ); + } + + $table.children('tbody').append($tr); + }); + + $placeHolder.append($table); + }; + + $(function() { + $('.simcir').each(function() { + var $placeHolder = $(this); + var text = $placeHolder.text().replace(/^\s+|\s+$/g, ''); + setupSimcir($placeHolder, JSON.parse(text || '{}') ); + }); + }); + + $(function() { + $('.simcir-doc').each(function() { + setupSimcirDoc($(this) ); + }); + }); + + $.extend($s, { + registerDevice: registerDevice, + clearSimcir: clearSimcir, + setupSimcir: setupSimcir, + createWorkspace: createWorkspace, + createSVGElement: createSVGElement, + offset: offset, + transform: transform, + enableEvents: enableEvents, + graphics: graphics, + controller: controller, + unit: unit + }); +}(simcir); + +// +// built-in devices +// +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + out1.setValue(in1.getValue() ); + } + }; + }; + + var createPortFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var cx = size.width / 2; + var cy = size.height / 2; + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 2}). + attr('class', 'simcir-port simcir-node-type-' + type) ); + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 4}). + attr('class', 'simcir-port-hole') ); + }; + }; + }; + + var createJointFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + var createOJointFactory = function() { + + var maxFadeCount = 50; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var out1 = device.addOutput(); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + //$path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + // register built-in devices + $s.registerDevice('In', createPortFactory('in') ); + $s.registerDevice('Out', createPortFactory('out') ); + $s.registerDevice('Joint', createJointFactory() ); + $s.registerDevice('OJoint', createOJointFactory() ); + +}(simcir); diff --git a/project1/Code_Documentation.md b/project1/Code_Documentation.md new file mode 100644 index 00000000..c2710e74 --- /dev/null +++ b/project1/Code_Documentation.md @@ -0,0 +1,62 @@ +# Code Documentation + +## Introduction + +This document captures the experiment implementation details. + +## Code Details + +1. **File name:** finalSimulator.html + **File description:** Contains the layout of the waveform simulator. + +2. **File name:** finalSimulator.js + **File description:** Contains the input validation as well as the workings to display the graph on the webpage. + +3. **File name:** style.css + **File description:** Contains the css for the waveform simulator. + +4. **File name:** help.html + **File description:** Contains instructions on how to build the graph. + +5. **File name:** simHelper.js + **File description:** Contains function to toggle the help in the waveform simulator. + +6. **File name:** simLayout.html + **File description:** Contains the layout for the main simulator which is the circuit simulator along with options and links to other pages. + +7. **File name:** simulatorOptions.js + **File description:** Contains the data for different circuits which can be seen in the main circuit page and functionality to display them. + +8. **File name:** layout.css + **File description:** Contains the css for the main simulator. + +9. **File name:** Quiz.html + **File description:** Contains the layout for the quiz. + +10. **File name:** quizStyle.css + **File description:** Contains the css for the quiz. + +11. **File name:** dynamic.js + **File description:** Contains the list of questions and functions required to operate the quiz. + + * **Function:** displayCurrentQuestion() + **Function description:** displays question. + + * **Function:** displayResults() + **Function description:** displays results. + +12. **File name:** load.js + **File description:** Contains jquery to load the questions and options onto the page. + +13. **File name:** Help2.html + **File description:** Contains the help for the main simulator. + +14. **File name:** project_doc.html + **File description:** Contains the theory behind the project. + +15. **File name:** project_doc_style.html + **File description:** Contains the css for the project documentation. + + + + diff --git a/project1/Codes/Help.html b/project1/Codes/Help.html new file mode 100644 index 00000000..e80d7500 --- /dev/null +++ b/project1/Codes/Help.html @@ -0,0 +1,52 @@ + + + + Graph Help + + + + +
+

How to use the graph simulator

+

+

    +
  1. Choose the type of clock (positive/negative edge triggered)
  2. +
  3. Now you can either select predefined input waveforms or you can construct your own waveform (shown below)
  4. +
  5. Click on the simulate button to view the result
  6. +
  7. After viewing the simulation, click the clear button to simulate again
  8. +
+

+
+
+

Making your own waveform

+

+ + Enter the number of clock pulses in the text box.
+
+ The waveform can be generated with the rules seen below.
+ Entering that letter in the textbox will give that corresponding wave.
+ Letters can be used together to generate a whole waveform. example: "phlhnl".
+ Each character in the waveform represents the wave in one clock pulse.
+

+ +

+ A dot "." is used to continue the previous waveform. example: "ph..l.n".
+ Here are a few examples of waveforms(phlhnl,ph..l.n and n.hl..nh respectively):
+

+ +
+ + \ No newline at end of file diff --git a/project1/Codes/Help2.html b/project1/Codes/Help2.html new file mode 100644 index 00000000..903ae813 --- /dev/null +++ b/project1/Codes/Help2.html @@ -0,0 +1,59 @@ + + + + Simulator Help + + + + + + + + +

The main Simulator page:

+

+ The main simulator page consists of a menu bar and the simulator.
+ The menu bar consists of pre-made simulations under the "See Simulation" heading.
+ The clear workspace button can be used to clear the simulator space and make it blank.
+ The waveform simulator can be accessed under the "Waveform Simulator" heading.
+ The theory and logic behind the experiment is given in the "Project Documentation" button.
+

+

How to use the Simulator:

+

+

    +
  • Choose a component from the toolbox and move it to the right.
  • +
  • Connections can be made clicking the input node and dragging it to an output node(or vice versa).
  • +
  • To disconnect two components click on the ipnut node.
  • +
  • To remove a component drag it back to the toolbox.
  • +
  • To edit the device name double click the label.
  • +
  • To test the D Flip flop with a custom input waveform, click on the simulator button.
  • +
+

Here is an example of the D flip-flop circuit:

+

This circuit shows a negative edge triggered clock with a frequency of 0.5Hz.
+ The input to the D Flip-Flop can be varied by clicking on the digit (which makes it either 0 or 1).
+ The graph has 4 inputs which are: D (input), Clock (input), Q and Q' (outputs) respectively.

+
+ { + "width":700, + "height":250, + "showToolbox":false, + "devices":[ + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)","id":"dev0","x":24,"y":192}, + {"type":"NumSrc","id":"dev1","x":16,"y":24,"label":"NumSrc","state":{"direction":0,"on":true}}, + {"type":"D-FF","id":"dev2","x":88,"y":96,"label":"D-FF"}, + {"type":"DSO","label":"Graph","id":"dev3","x":208,"y":56,"state":{"playing":true,"rangeIndex":0}} + ], + "connectors":[ + {"from":"dev2.in0","to":"dev1.out0"}, + {"from":"dev2.in1","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev1.out0"}, + {"from":"dev3.in1","to":"dev0.out0"}, + {"from":"dev3.in2","to":"dev2.out0"}, + {"from":"dev3.in3","to":"dev2.out1"} + ] +} +
+ +

+ + diff --git a/project1/Codes/Images/1.png b/project1/Codes/Images/1.png new file mode 100644 index 00000000..e0c57d2d Binary files /dev/null and b/project1/Codes/Images/1.png differ diff --git a/project1/Codes/Images/2.png b/project1/Codes/Images/2.png new file mode 100644 index 00000000..f5ef07cd Binary files /dev/null and b/project1/Codes/Images/2.png differ diff --git a/project1/Codes/Images/3.png b/project1/Codes/Images/3.png new file mode 100644 index 00000000..1953d1f0 Binary files /dev/null and b/project1/Codes/Images/3.png differ diff --git a/project1/Codes/Images/CMOSgraph.png b/project1/Codes/Images/CMOSgraph.png new file mode 100644 index 00000000..f1d0d113 Binary files /dev/null and b/project1/Codes/Images/CMOSgraph.png differ diff --git a/project1/Codes/Images/not.png b/project1/Codes/Images/not.png new file mode 100644 index 00000000..9a9da2d0 Binary files /dev/null and b/project1/Codes/Images/not.png differ diff --git a/project1/Codes/Images/truthTable.png b/project1/Codes/Images/truthTable.png new file mode 100644 index 00000000..a9268f0e Binary files /dev/null and b/project1/Codes/Images/truthTable.png differ diff --git a/project1/Codes/Questions.txt b/project1/Codes/Questions.txt new file mode 100644 index 00000000..3ec51d50 --- /dev/null +++ b/project1/Codes/Questions.txt @@ -0,0 +1,75 @@ +Does the order of input and output ports in the argument of module matters? + +yes +>no +may matter in some situation +may not matter in certain conditions + + +Which of the following loops are supported by verilog? +if-else loop +for loop +while loop +>all of these + + +What defines the beginning and end of a loop +begin----end +curly brackets () +>none of these +both of them + + +What defines high impedance state or floating state in verilog? +1 +X +>Z +Both X and Z + + +In the following figure A is input and B is output of inverter and C is clock. Tell whether inverter is working synchronously or asynchronously? + + +asynchronous +>synchronous +unpredictable +sometimes synchronous and sometimes asynchronous + + +In the above figure, tell whether inverter is working on positive edge or negative edge of clock? + + +negative edge +>positive edge +both on positive edge and negative edge +middle of positive and negative edge of clock + + +In the following figure tell whether reset is synchronous or asynchronous? + + +asynchronous +synchronous +>unpredictable +sometimes synchronous and sometimes asynchronous + + +What is the similar system task in verilog as printf in C? +$monitor +>$display +$print +all of these + + +In the figure given in ques7, tell whether it is a positive edge reset or negative edge? +both positive and negative edge reset +negative edge reset +>positive edge +unpredictable + + +Can we include one source file in another in verilog? +no +>yes using `include +yes using `define +yes by just writing the name of file in another file diff --git a/project1/Codes/Quiz.html b/project1/Codes/Quiz.html new file mode 100644 index 00000000..6c4a2882 --- /dev/null +++ b/project1/Codes/Quiz.html @@ -0,0 +1,26 @@ + + + + Quiz + + + + + + +
+
+
    +
    +
    +
    +
    Next Question
    +
    Result
    +
    +
    +
    +
    + +
    + + \ No newline at end of file diff --git a/project1/Codes/Readme.txt b/project1/Codes/Readme.txt new file mode 100644 index 00000000..739a14ad --- /dev/null +++ b/project1/Codes/Readme.txt @@ -0,0 +1,44 @@ +SRIP + +VLSI | issue no 385 | Design of D FF + +-------------------------------------------------------------------------------- + +Simulator: +The Simulator can be used by clicking the simLayout.html file. +The waveform simulator can be accessed through that webpage itself by clicking the +graph simulator button, or it can also be independently accessed by clicking the +finalSimulator.html file. +Help button can be pressed to access help. +Project Documentation can be found in project_doc.html + +The following are the files used for the simulator: + +Wave Simulator: +finalSimulator.html +style.css +finalSimulator.js +simHelper.js + +Circuit Simulator: +simLayout.html +layout.css +simHelper.js +simulatorOptions.js + +---------------------------------------------------------------------------------- + +Quiz: +The Quiz can be accessed by clicking on the quiz.html file. +Help button can be pressed to access help. + +The following are the files used for the quiz: + +Quiz.html +quizStyle.css +load.js +dynamic.js +Images (contains the images of a few questions) + + +---------------------------------------------------------------------------------- diff --git a/project1/Codes/Test_Cases/testcases-WaveSimulator.txt b/project1/Codes/Test_Cases/testcases-WaveSimulator.txt new file mode 100644 index 00000000..28812d93 --- /dev/null +++ b/project1/Codes/Test_Cases/testcases-WaveSimulator.txt @@ -0,0 +1,22 @@ +1.Mandatory options not being selected (must give alert) +status:fixed + +2. Selecting between input waveform and custom waveform (only one has to be selected) +status: fixed + +3.Clock pulse can only be integer +status: fixed + +4.Waveform has to only follow the standard mentioned in help doc. +status: fixed + +5.No of clock pulses should not exceed window size. +status: fixed + +6.No of clock pulses should be equal to the input waveform. +status: fixed + +7.Simulate can still be pressed without clearing the graph. +status: fixed + + diff --git a/project1/Codes/dynamic.js b/project1/Codes/dynamic.js new file mode 100644 index 00000000..8c64c41a --- /dev/null +++ b/project1/Codes/dynamic.js @@ -0,0 +1,164 @@ + + +var questions = [ +{ + question: "Does the order of input and output ports in the argument of module matter?", + choices: ["yes", "no", "may matter in some situations", "may not matter in some situations"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 1 +}, +{ + question: "Which of the following loops are supported by verilog?", + choices: ["if-else loop", "for loop", "while loop", "all of the above"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 3 +}, +{ + question: "What defines the beginning and end of a loop", + choices: ["begin----end", "curly brackets ()", "None of these", "Both of them"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 0 +}, +{ + question: "What defines high impedance state or floating state in verilog?", + choices: ["1", "X", "Z", "Both X and Z"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 2 +}, +{ + question: "In the figure A is input and B is output of inverter and C is clock. Tell whether inverter is working synchronously or asynchronously?", + choices: ["asynchronous", "synchronous", "unpredictable", "sometimes synchronous sometimes asynchronous"], + source: "Images/1.png", + correctAnswer: 1 +}, +{ + question: "In the figure, tell whether inverter is working on positive edge or negative edge of clock?", + choices: ["negative edge","positive edge","Both on negative and positive edge","Middle of negative and positive edge"], + source: "Images/2.png", + correctAnswer: 1 +}, +{ + question: "In the following figure tell whether reset is synchronous or asynchronous?", + choices: ["asynchronous","synchronous","unpredictable","sometimes synchronous and sometimes asynchronous"], + source: "Images/3.png", + correctAnswer: 0 +}, +{ + question: "What is the similar system task in verilog as printf in C?", + choices: ["$monitor","$display","$print","all of these"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 1 +}, +{ + question: "In the figure given is it a positive edge reset or negative edge reset?", + choices: ["both positive and negative edge reset","negative edge","positive edge","unpredictable"], + source: "Images/3.png", + correctAnswer: 2 + +}, +{ + question: "Can we include one source file in another in verilog?", + choices: ["no","yes using \`include","yes using \`define","yes by just writing the name of file in another file"], + source: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", + correctAnswer: 1 +} +]; + +var currentQuestion = 0; +var correctAnswers = 0; +var quizOver = false; +var choiceArr = []; + + + +function displayCurrentQuestion() +{ + + var question = questions[currentQuestion].question; + var questionClass = $(document).find(".quizContainer > .question"); + var choiceList = $(document).find(".quizContainer > .choiceList"); + var numChoices = questions[currentQuestion].choices.length; + + $(questionClass).text(question); + + $("
    \"").appendTo(questionClass); + + $(choiceList).find("li").remove(); + + var choice; + for (var i = 0; i < numChoices; i++) + { + choice = questions[currentQuestion].choices[i]; + $("
  • " + choice + "
  • ").appendTo(choiceList); + } +} + +function displayResults() +{ + var i = 0; + var resultClass = $(document).find(".resultContainer"); + var flag; + $("

    Result:

    ").appendTo(resultClass); + $("

    The highlighted answers are the correct answers.
    The selected options are the ones you selected.

    ").appendTo(resultClass); + while(i" + question + "
    ").appendTo(resultClass); + $("
    \"").appendTo(resultClass); + + + //$(resultClass).append(question); + //console.log("In loop"); + $("
    ").appendTo(resultClass); + var choice; + flag=0; + for (var j = 0; j < numChoices; j++) + { + choice = questions[i].choices[j]; + if(choiceArr[i]==questions[i].correctAnswer && flag===0 && choiceArr[i]==j) + { + $("
  • " + choice + "
  • ").appendTo(resultClass); + flag = 1; + } + else + { + if(choiceArr[i]==j && flag===0) + { + $("
  • " + choice + "
  • ").appendTo(resultClass); + } + else if(questions[i].correctAnswer==j && flag===0) + { + $("
  • " + choice + "
  • ").appendTo(resultClass); + } + else + { + $("
  • " + choice + "
  • ").appendTo(resultClass); + } + } + } + + i++; + } +} + +function hideScore() +{ + $(document).find(".result").hide(); +} + +function resetQuiz() +{ + currentQuestion = 0; + correctAnswers = 0; + hideScore(); +} + +function displayScore() +{ + var results = $(document).find(".quizContainer > .result"); + $(results).text("You scored: " + correctAnswers + " out of: " + questions.length); + $(results).show(); +} + diff --git a/project1/Codes/finalSimulator.html b/project1/Codes/finalSimulator.html new file mode 100644 index 00000000..3e90b1f7 --- /dev/null +++ b/project1/Codes/finalSimulator.html @@ -0,0 +1,79 @@ + + + + + + Graph Simulator + + + + + + + + + + +
    +

    Simulator

    +

    Waveform

    +
    +
    +
    + +
    +
    +
    + + +
    + +

    Or make your own waveform:

    + + +
    + +
    + +
    + +
    +
    + + +
    +
    + + \ No newline at end of file diff --git a/project1/Codes/finalSimulator.js b/project1/Codes/finalSimulator.js new file mode 100644 index 00000000..17556d3a --- /dev/null +++ b/project1/Codes/finalSimulator.js @@ -0,0 +1,169 @@ +var s = ""; +var P = "P."; +var Q = ""; +var Q0 = ""; + function myFunction() + { + var clkval = document.getElementById("clock").value; + var waveval = document.getElementById("waveform").value; + var clkpulse = document.getElementById("number").value; + var str = document.getElementById("line").value; + if(clkval==="0") + { + alert("Choose a clock type!"); + return; + } + + if(clkpulse.length===0 && str.length===0) + { + if(waveval==="0") + { + alert("Choose a waveform!"); + return; + } + if(clkval=="1") + { + P="P......."; + } + else + { + P="N......."; + } + switch (waveval) + { + case "1": s="h.lp.hlh"; + break; + + case "2": s="lh.n.lhn"; + break; + + case "3": s="plhn.h.."; + break; + } + } + + else if(clkpulse.length!==0 && str.length!==0) + { + if(clkval==="1") + { + P="P"; + } + else + { + P="N"; + } + var pulseno = parseInt(clkpulse,10); + for(var j=1;jelewidth) + { + ch = confirm("Warning: Your waveform could exceed the size limit of your window"); + //console.log("In if"); + } + if(!ch) + { + //console.log("In other if"); + return; + } + + var l = P.length; + var temp=""; + for(var i = 0;i < l;i++) + { + if(s[i]==="h" || s[i]==="p") + { + if(temp==="h") + { + Q = Q + "."; + } + else + { + Q = Q + "h"; + temp = "h"; + } + } + else if(s[i]==="l" || s[i]==="n") + { + if (temp==="l") + { + Q = Q + "."; + } + else + { + Q = Q + "l"; + temp="l"; + } + } + else if(s[i]===".") + { + Q = Q + "."; + } + } + for(var i = 0;i < Q.length;i++) + { + if(Q[i]==="h") + { + Q0 = Q0 + "l"; + } + else if(Q[i]==="l") + { + Q0 = Q0 + "h"; + } + else if(Q[i]===".") + { + Q0 = Q0 + "."; + } + } + + + try { + /*global WaveDrom*/ + WaveDrom.ProcessAll(); + } catch(e) {} + + + var stop = document.getElementById("simulate"); + stop.disabled=true; + stop.style.backgroundColor = "grey"; + stop.style.color = "lightgrey"; + } \ No newline at end of file diff --git a/project1/Codes/layout.css b/project1/Codes/layout.css new file mode 100644 index 00000000..763b3559 --- /dev/null +++ b/project1/Codes/layout.css @@ -0,0 +1,131 @@ + + .item1 { + background: LightSkyBlue; + grid-area: head; + text-align: center; + font-size: 40px; + font-weight: bold; + } + + .someMargin { + margin-left: 50px; + } + + .align { + display: inline-block; + } + + .item3 { + background: white; + grid-area: content; + } + + .some-text { + text-align: left; + font-size: 15px; + } + + .button { + transition-duration: 0.4s; + cursor: pointer; + background-color: white; + color: black; + border-top: 0.5px solid black; + padding: 10px; + width: 15rem; + height: 50px; + } + + .extraBottom { + border-bottom: 0.5px solid black; + } + + .button:hover { + background-color: lightgrey; + color: black; + } + + .buttonCalm { + transition-duration: 0.4s; + cursor: pointer; + background-color: white; + color: black; + padding: 10px; + width: 15rem; + height: 50px; + border: 1px solid black; + } + + .buttonCalm:hover { + background-color: lightgrey; + + } + + .helpbutton { + transition-duration: 0.4s; + cursor: pointer; + background-color: lightcyan; + color: black; + border-top: 0.5px solid black; + padding: 10px; + width: 15rem; + height: 50px; + } + + .helpbutton:hover { + background-color: aquamarine; + color: black; + } + + .redColor { + background-color: #FED7D7; + } + + .redColor:hover { + background-color: #FE5A5A; + } + + + #sidebar-wrapper { + min-height: 100vh; + margin-left: -15rem; + -webkit-transition: margin .25s ease-out; + -moz-transition: margin .25s ease-out; + -o-transition: margin .25s ease-out; + transition: margin .25s ease-out; +} + +#sidebar-wrapper .sidebar-heading { + padding: 0.875rem 1.25rem; + font-size: 1.2rem; + background-color: #3f3f3f; + color: white; +} + +#sidebar-wrapper .list-group { + width: 15rem; +} + +#page-content-wrapper { + min-width: 100vw; +} + +#wrapper.toggled #sidebar-wrapper { + margin-left: 0; +} + +@media (min-width: 768px) { + #sidebar-wrapper { + margin-left: 0; + } + + #page-content-wrapper { + min-width: 0; + width: 100%; + } +} + + + + + \ No newline at end of file diff --git a/project1/Codes/load.js b/project1/Codes/load.js new file mode 100644 index 00000000..70157f86 --- /dev/null +++ b/project1/Codes/load.js @@ -0,0 +1,70 @@ +$(document).ready(function () +{ + + // Display the first question + displayCurrentQuestion(); + $(this).find(".quizMessage").hide(); + $(this).find(".resultButton").hide(); + + // On clicking next, display the next question + $(this).find(".nextButton").on("click", function () + { + /*global quizOver*/ + if (!quizOver) + { + + var value = $("input[type='radio']:checked").val(); + + if (value == null) + { + $(document).find(".quizMessage").text("Please select an answer"); + $(document).find(".quizMessage").show(); + } + else + { + /*global value*/ + choiceArr.push(value); + // TODO: Remove any message + $(document).find(".quizMessage").hide(); + + /*global currentQuestion*/ + if (value == questions[currentQuestion].correctAnswer) + { + /*global correctAnswers*/ + correctAnswers++; + } + + currentQuestion++; // Since we have already displayed the first question on DOM ready + /*global questions*/ + if (currentQuestion < questions.length) + { + /*global displayCurrentQuestion*/ + displayCurrentQuestion(); + } + else + { + /*global displayScore*/ + displayScore(); + $(document).find(".resultButton").show(); + // Change the text in the next button to ask if user wants to play again + $(document).find(".nextButton").text("Try Again?"); + /*global quizOver*/ + quizOver = true; + } + } + } + else + { + // quiz is over and clicked the next button (basically the 'Try Again?') + document.location.reload(false); + } + }); + + /*global displayResults */ + $(this).find(".resultButton").one("click", function() + { + displayResults(); + + }); + +}); \ No newline at end of file diff --git a/project1/Codes/project_doc.html b/project1/Codes/project_doc.html new file mode 100644 index 00000000..07789201 --- /dev/null +++ b/project1/Codes/project_doc.html @@ -0,0 +1,70 @@ + + + + Documentation + + + +

    Design of D Flip Flop

    + +

    Introduction

    + +

    Inverter is a logic gate, with one input and one output. Its symbol is shown below:-
    +
    + The output of inverter is complement of the input i.e. if the input is 0, the output will be 1 and vice-versa.
    The truth table for inverter is shown below:-
    +
    + The transistor level schematic of inverter can be designed in many logics,following two logics will be used for
    designing in the experiment, Complementary CMOS logic and Pseudo NMOS logic.
    +

    + +

    Theory

    + +

    CMOS INVERTER

    +

    + In the transistor level design of CMOS inverter consists of nmos and pmos transistor in series.The PMOS
    transistor is connected between Vdd and output node,whereas the NMOS is connected betweeen the output node and
    gnd.
    +

    + +

    WORKING OF CMOS INVERTER

    +

    + Before knowing the working of CMOS inverter we will see the regions of operation of transistor so that we can
    understand what is actually happening inside the inverter. MOS transistors have three regions of operations :
    + 1) cut-off region 2) linear region 3) saturation region.

    + + The transistor is said to be in cut-off region when Vgs < Vt. Vgs is the voltage applied at gate with respect
    + to source and Vt is the threshhold voltage below which the transistor does not work. So for transistor to work
    Vgs - Vt should be greater than zero always.

    + + The transistor is in linear region when Vgs-Vt>Vds where Vds is the voltage at drain with respect to source.
    + The transistor is said to be in saturation region when Vgs-Vt < Vds.

    + + The transfer characteristic(i.e. the output voltage vs input voltage) is shown in the figure below.
    +
    + The operation is divided into 5 region depending on the range of input voltage. The output voltage in every
    region is obtained by equating drain to source current of pmos and nmos.

    +

    + +

    EFFECT OF W/L RATIO ON OUTPUT WAVEFORM

    +

    + β is the MOS transistor gain factor which depends both on process parameters and geometry parameters.
    + β = k(W/L)
    + where K is the factor which shows process dependencyand W & L shows geometry dependency.
    + For NMOS, gain factor is denoted by βn and for PMOS, gain factor is denoted by βp.

    + + W/L ratio is directly proportional to β.The ratio βn/βp is crucial in determinig the transfer characteristic
    + of the inverter. When the ratio is increased the transition shifts from left to right,but the output voltage
    transition remains sharp. For CMOS the ratio is desired to be 1 so that it requires equal time to charge and
    discharge.

    +

    +

    EFFECT OF CAPACITANCE ON THE RISE AND FALL TIME

    +

    + The rise time is defined as the time required to charge the capacitor from 10% to 90% and fall time is defined
    + as the time required for the capacitor to discharge from 90% to 10%.

    + + Greater value of capacitor implies larger rise and fall time,which furthur implies large delay. The rise time
    + and fall time are directly proportional to the capacitance, therefore, greater the value of capacitance,
    + greater will be the time taken for rising and falling.

    +

    +

    PSEUDO NMOS

    +

    + The gate of p-device is permanently grounded which is equivalent to use of NMOS in depletion mode.
    +

    + + + + + + \ No newline at end of file diff --git a/project1/Codes/project_doc_style.css b/project1/Codes/project_doc_style.css new file mode 100644 index 00000000..945bf096 --- /dev/null +++ b/project1/Codes/project_doc_style.css @@ -0,0 +1,23 @@ +body { + text-align: center; + background-color: cornsilk; +} + +p { + font-family: sans-serif; +} + +h1 { + font-size: 3.5em; + background-color: burlywood; +} + +h2 { + background-color: wheat; + font-size: 2em; +} + +h3 { + background-color: blanchedalmond; + font-family: monospace; +} \ No newline at end of file diff --git a/project1/Codes/quizStyle.css b/project1/Codes/quizStyle.css new file mode 100644 index 00000000..e56aa476 --- /dev/null +++ b/project1/Codes/quizStyle.css @@ -0,0 +1,133 @@ +@import url(http://fonts.googleapis.com/css?family=Rokkitt); + +ul { + list-style: none; +} +li { + font-family:sans-serif; + font-size: 1.5em; + list-style: none; +} +input[type=radio] +{ + border: 0px; + width: 1.5em; + height: 1.5em; + cursor: pointer; +} + +h1,h2 { + text-align: center; +} + + + .quizContainer { + background-color: cornsilk; + border-radius: 6px; + width: auto; + height: auto; + margin: auto; + padding-top: 5px; + position: relative; + border-style: solid; + border-color: black; + border-width: 3px; +} + +#container { + text-align: center; +} +.nextButton { + border-radius: 50px; + width: 150px; + height: 40px; + background-color: lightgrey; + color: black; + font-family: monospace; + font-weight: bold; + font-size: 18px; + position: relative; + margin: auto; + padding: 20px; + display: inline-block; + border-style: solid; + border-color: black; + border-width: 2px; + transition-duration: 0.4s; + cursor: pointer; +} + +.nextButton:hover { + background-color: white; +} + +.question { + font-family:'Rokkitt', serif; + font-size: 2em; + width: 90%; + height: auto; + margin: auto; + border-radius: 6px; + background-color: bisque; + text-align: center; + border-style: solid; + border-color: black; + border-width: 3px; +} +.quizMessage { + background-color: peachpuff; + border-radius: 6px; + width: 30%; + margin: auto; + text-align: center; + padding: 2px; + font-family:'Rokkitt', serif; + color: red; +} +.choiceList { + font-family: sans-serif; + color: black; +} +.result { + width: 30%; + height: auto; + border-radius: 6px; + background-color: linen; + margin: auto; + text-align: center; + font-family:'Rokkitt', serif; +} +.resultButton { + border-radius: 50px; + width: 150px; + height: 40px; + color: black; + position: relative; + margin: auto; + font-size: 18px; + padding: 20px; + display: inline-block; + background-color: lightgrey; + font-family: monospace; + font-weight: bold; + border-style: solid; + border-color: black; + border-width: 2px; + cursor: pointer; + transition-duration: 0.4s; +} + +.resultButton:hover { + background-color: white; +} + +.resultContainer { + background-color: lightblue; + border-radius: 6px; + width: auto; + height: auto; + margin: auto; + padding-top: 5px; + position: relative; +} +/* End of Quiz Classes */ \ No newline at end of file diff --git a/project1/Codes/simHelper.js b/project1/Codes/simHelper.js new file mode 100644 index 00000000..61012824 --- /dev/null +++ b/project1/Codes/simHelper.js @@ -0,0 +1,12 @@ +$(document).ready(function () +{ + $("#helpme").hide(); + $("#helpmeButton").on("click",function() + { + $("#helpme").toggle(); + }); + $("#menu-toggle").click(function(e) { + e.preventDefault(); + $("#wrapper").toggleClass("toggled"); + }); +}); diff --git a/project1/Codes/simLayout.html b/project1/Codes/simLayout.html new file mode 100644 index 00000000..c357e70f --- /dev/null +++ b/project1/Codes/simLayout.html @@ -0,0 +1,134 @@ + + + + + + Simulator + + + + + + + + + + + + + + +
    +

    Simulator

    +

    D Flip-Flop

    + +
    +
    +
    + + +
    +
    + +
    +
    + +
    + + + + diff --git a/project1/Codes/simulatorOptions.js b/project1/Codes/simulatorOptions.js new file mode 100644 index 00000000..82c9c230 --- /dev/null +++ b/project1/Codes/simulatorOptions.js @@ -0,0 +1,144 @@ +if(sessionStorage.getItem("DFlipFlop")) +{ + var dfl = { + "width":870, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"D-FF"}, + {"type":"LED"}, + {"type":"Toggle"}, + {"type":"NumSrc"}, + {"type":"NumDsp"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"In","id":"dev0","x":168,"y":184,"label":"D"}, + {"type":"In","id":"dev1","x":208,"y":288,"label":"CLK"}, + {"type":"NOT","id":"dev2","x":216,"y":224,"label":"NOT"}, + {"type":"NAND","id":"dev3","x":264,"y":192,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":264,"y":256,"label":"NAND"}, + {"type":"RS-FF","id":"dev5","x":312,"y":224,"label":"RS-FF"}, + {"type":"NOT","id":"dev6","x":336,"y":288,"label":"NOT"}, + {"type":"NAND","id":"dev7","x":392,"y":192,"label":"NAND"}, + {"type":"NAND","id":"dev8","x":392,"y":256,"label":"NAND"}, + {"type":"RS-FF","id":"dev9","x":440,"y":224,"label":"RS-FF"}, + {"type":"Out","id":"dev10","x":520,"y":192,"label":"Q"}, + {"type":"Out","id":"dev11","x":520,"y":256,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":120,"y":184,"label":"Toggle","state":{"on":false}}, + {"type":"PushOn","id":"dev13","x":120,"y":288,"label":"PushOn"}, + {"type":"DC","id":"dev14","x":72,"y":232,"label":"DC"}, + {"type":"LED","id":"dev15","x":608,"y":192,"label":"LED"}, + {"type":"LED","id":"dev16","x":608,"y":256,"label":"LED"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev12.out0"}, + {"from":"dev1.in0","to":"dev13.out0"}, + {"from":"dev2.in0","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev4.in1","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev1.out0"}, + {"from":"dev7.in0","to":"dev5.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev6.out0"}, + {"from":"dev8.in1","to":"dev5.out1"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev8.out0"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev9.out1"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev13.in0","to":"dev14.out0"}, + {"from":"dev15.in0","to":"dev10.out0"}, + {"from":"dev16.in0","to":"dev11.out0"} + ] + } + var html1=JSON.stringify(dfl); + document.querySelector(".simcir").innerHTML=html1; +} +else if(sessionStorage.getItem("DFlipFlopCirc")) +{ + var dfl = { + "width":870, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"D-FF"}, + {"type":"LED"}, + {"type":"Toggle"}, + {"type":"NumSrc"}, + {"type":"NumDsp"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"DSO","label":"Graph","id":"dev0","x":448,"y":152,"state":{"playing":true,"rangeIndex":0}}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)","id":"dev1","x":56,"y":280}, + {"type":"D-FF","id":"dev2","x":224,"y":192,"label":"D-FF"}, + {"type":"DC","id":"dev3","x":48,"y":136,"label":"DC"}, + {"type":"Toggle","id":"dev4","x":120,"y":136,"label":"Toggle","state":{"on":false}} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev4.out0"}, + {"from":"dev0.in1","to":"dev1.out0"}, + {"from":"dev0.in2","to":"dev2.out0"}, + {"from":"dev0.in3","to":"dev2.out1"}, + {"from":"dev2.in0","to":"dev4.out0"}, + {"from":"dev2.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev3.out0"} + ] + } + var html1=JSON.stringify(dfl); + document.querySelector(".simcir").innerHTML=html1; + +} +else +{ + var obj = { + "width":870, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"D-FF"}, + {"type":"LED"}, + {"type":"Toggle"}, + {"type":"NumSrc"}, + {"type":"NumDsp"}, + {"type":"DSO","label":"Graph"} + ] + } + var html=JSON.stringify(obj); + document.querySelector(".simcir").innerHTML=html; +} + +$("#dfli").click(function(event) { + sessionStorage.setItem("DFlipFlop",1); + sessionStorage.removeItem("DFlipFlopCirc"); + location.reload(); +}); + +$("#dfl").click(function(event) { + sessionStorage.setItem("DFlipFlopCirc",1); + sessionStorage.removeItem("DFlipFlop"); + location.reload(); +}); + +$("#clear").click(function(event) { + sessionStorage.removeItem("DFlipFlopCirc",1); + sessionStorage.removeItem("DFlipFlop"); + location.reload(); +}); \ No newline at end of file diff --git a/project1/Codes/style.css b/project1/Codes/style.css new file mode 100644 index 00000000..3559bee0 --- /dev/null +++ b/project1/Codes/style.css @@ -0,0 +1,91 @@ +@import url('https://fonts.googleapis.com/css?family=Open+Sans'); + +.box { + border-style: solid; + border-color: black; + border-width: 5px; + text-align: center; + } + + .lightblue-box { + background-color: wheat; + text-align: left; + padding: 30px; + } + + .some-margin { + margin: 1em; + } + + .white-box { + background-color: white; + color: #fff; + padding: 1px; + } + + .button { + transition-duration: 0.4s; + cursor: pointer; + background-color: #232323; + color: white; + padding: 10px; + width: 150px; + height: 50px; + margin-top: 10px; + margin-bottom: 10px; + } + + .button:hover { + background-color: white; + color: black; + border: 1px solid black; + } + + .erode { + border-radius: 7px; + } + + .select { + transition-duration: 0.4s; + cursor: pointer; + background-color: #232323; + color: white; + width: 155px; + height: 50px; + margin-top: 10px; + margin-bottom: 10px; + } + + .select:hover { + background-color: white; + color: black; + + } + + .text { + background-color: #232323; + color: white; + cursor: pointer; + transition-duration: 0.4s; + } + + .text:hover { + background-color: white; + color: black; + } + + .helpbutton { + transition-duration: 0.4s; + cursor: pointer; + background-color: blue; + color: white; + padding: 10px; + width: 150px; + height: 50px; + } + + .helpbutton:hover { + background-color: white; + color: black; + border: 1px solid black; + } \ No newline at end of file diff --git a/project1/Experiment_Project_Documentation.md b/project1/Experiment_Project_Documentation.md new file mode 100644 index 00000000..a48e0631 --- /dev/null +++ b/project1/Experiment_Project_Documentation.md @@ -0,0 +1,72 @@ +# Experiment Project Documentation + +## Introduction + +This document captures the technical details related to the experiment development. + +## Project +**Domain name:** Computer Science & Engineering. +**Lab name:** Very Large Scale Integration. +**Experiment name:** Design of D FLip Flop. + +The D flip-flop tracks the input, making transitions which match those of the input D. The D stands for "data"; this flip-flop stores the value that is on the data line. It can be thought of as a basic memory cell. A D flip-flop can be made from a set/reset flip-flop by tying the set to the reset through an inverter. The result may be clocked. + +This experiment is used to simulate the working of a D Flip-Flop circuit wise. It can also be used with a custom input waveform to observe the output of the circuit. + +## Purpose of the Project + +The purpose of this project is to convert the D Flip-flop experiment simulation from Java to Javascript. + +## Project Developers Details + +| Sl.no | Name | Year Of Study | Role | Email-ID | Github handle | +|:-----:|:-----------------:|:-------------:|:---------:|:---------------------------:|:-------------:| +| 1 | Utkarsh Chhapekar | 2nd year | Developer | utkarshchhapekar2@gmail.com | Utkichaps | + +## Technologies and Libraries + +**Technologies:** +1. HTML +2. CSS +3. Javascript + +**Libraries:** +1. SimCir JS +2. Wavedrom JS +3. JQuery +4. Bootstrap + +## Development Environment + +**OS:** Ubuntu 18.04 + +## Documents and Files: + +| Sl.no | Document | Role | +|:-----:|:------------------:|:------------------------------------------------------------------------------:| +| 1. | Procedure | This document captures the instructions to run the simulations | +| 2. | Test Cases | This document captures the functional test cases of the experiment simulation | +| 3. | Code Documentation | This document captures the details related to code | +| Sl.no | File | Role | +| 1. | Codes | Contains the major code as well as the images related to it. | +| 2. | Libraries | Contains libraries used by the code | + +## Process Followed to convert the experiment + +1. Understand the assigned experiment Java simulation. +2. Understanding the experiment concept. +3. Re-implement the same in javascript. + +## Value Added by our Project + +It is beneficial to engineering students who want to understand the inner working of the D Flip-Flop and observe the simulated graph with a custom input waveform. + +## Risks and Challenges + +A few challenges faced during the development process was integrating the wavedrom and checking the waveform for any issues. + +## Issues + +In Firefox, in the waveform simulator, when you click on the help button the graph is not displayed in the help section. + + diff --git a/project1/Experiment_Test_Cases_Documentation.md b/project1/Experiment_Test_Cases_Documentation.md new file mode 100644 index 00000000..c025a471 --- /dev/null +++ b/project1/Experiment_Test_Cases_Documentation.md @@ -0,0 +1,25 @@ +# Experiment Test Cases Documentation + +## Introduction + +This document captures the test cases of the experiment. + +## Functional Test Cases + +| Test case id | Test Scenario | Test Steps | Expected Output | Actual Output | Result | +|:------------:|:------------------------------------------------------------------------------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------:|:------:| +| 1. | Mandatory options not being selected (must give alert) | Click on simulate without selecting a certain option | Choose an option! | Choose an Option! | pass | +| 2. | Selecting between input waveform and custom waveform (only one has to be selected) | Choose clock type and then don't choose any waveform option | Choose a waveform! | Choose a waveform! | pass | +| 3. | Clock pulse can only be integer | For the clock pulse option input anything except an integer | Invalid number of pulses | Invalid number of pulses | pass | +| 4. | Waveform has to only follow the standard mentioned in help doc. | For the input waveform input a wrong waveform. | Invalid input waveform (refer help) | Invalid input waveform (refer help) | pass | +| 5. | No of clock pulses should not window size. | Enter a big number of clock pulses which could exceed size of window | Warning: Your waveform could exceed the size limit of your window. | Warning: Your waveform could exceed the size limit of your window. | pass | +| 6. | No of clock pulses should be equal to the input waveform. | Make number of clock pulses not equal to input waveform length. | No of pulses and length of input waveform should be same | No of pulses and length of input waveform should be same | pass | +| 7. | Simulate can still be pressed without clearing the graph. | Simulate the graph and click on simulate again | Simulate button is greyed out | Simulate button is greyed out. | pass | + +## Cross Browser Testing + +| Sl.no | Browser | Version | Works? | +|-------|-----------------|---------------|--------| +| 1. | Google Chrome | 75.0.3770.100 | Yes | +| 2. | Mozilla Firefox | 67.0.4 | yes | + diff --git a/project1/Libraries/Bootstrap/bootstrap.bundle.min.js b/project1/Libraries/Bootstrap/bootstrap.bundle.min.js new file mode 100644 index 00000000..43203684 --- /dev/null +++ b/project1/Libraries/Bootstrap/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),h=0l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)r(o.top)||"bottom"===_&&r(i.top)r(g.right),c=r(i.top)r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:''}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||tcode{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/project1/Libraries/Readme.txt b/project1/Libraries/Readme.txt new file mode 100644 index 00000000..2426821c --- /dev/null +++ b/project1/Libraries/Readme.txt @@ -0,0 +1,5 @@ +Libraries used: + +Jquery +SimCir JS +Wavedrom diff --git a/project1/Libraries/jquery-3.4.1.min.js b/project1/Libraries/jquery-3.4.1.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/project1/Libraries/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + simcirjs + + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/project1/Libraries/simcirjs/LICENSE b/project1/Libraries/simcirjs/LICENSE new file mode 100644 index 00000000..fba3333e --- /dev/null +++ b/project1/Libraries/simcirjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 Kazuhiko Arase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/project1/Libraries/simcirjs/README.txt b/project1/Libraries/simcirjs/README.txt new file mode 100644 index 00000000..ce11a166 --- /dev/null +++ b/project1/Libraries/simcirjs/README.txt @@ -0,0 +1,9 @@ +SimcirJS + +Copyright (c) 2014 Kazuhiko Arase + +URL: http://www.d-project.com/ + +Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + diff --git a/project1/Libraries/simcirjs/misc/simcir-altfulladder.js b/project1/Libraries/simcirjs/misc/simcir-altfulladder.js new file mode 100644 index 00000000..1cb8d588 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir-altfulladder.js @@ -0,0 +1,57 @@ +// +// SimcirJS - altfulladder +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// This file describes how to customize the layout of library. +// + +// includes following device types: +// AltFullAdder + +simcir.registerDevice('AltFullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "layout":{"rows":8,"cols":8,"hideLabelOnWorkspace":true, + "nodes":{"A":"T2","B":"T6","S":"B4","Cin":"R4","Cout":"L4"}}, + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); diff --git a/project1/Libraries/simcirjs/misc/simcir-delay.js b/project1/Libraries/simcirjs/misc/simcir-delay.js new file mode 100644 index 00000000..02747e33 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir-delay.js @@ -0,0 +1,224 @@ +// +// SimcirJS - Delay +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Delay + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1, delay) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + var value = in1.getValue(); + window.setTimeout(function() { out1.setValue(value); }, delay); + } + }; + }; + + var createDelayFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var defaultDelay = 50; + var defaultDelayColor = '#ff0000'; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var delay = Math.max(0, device.deviceDef.delay || defaultDelay); + var color = device.deviceDef.color || defaultDelayColor; + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1, delay); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector').css('stroke', color); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + labelless: true, + params: [ + {name: 'delay', type: 'number', + defaultValue: defaultDelay, + description: 'time delay in milli-seconds.'}, + {name: 'color', type: 'string', + defaultValue: defaultDelayColor, + description: 'color in hexadecimal.'}], + code: '{"type":"' + device.deviceDef.type + '","delay":50}' + }; + }; + }; + }; + + $s.registerDevice('Delay', createDelayFactory() ); + +}(simcir); diff --git a/project1/Libraries/simcirjs/misc/simcir-dso.js b/project1/Libraries/simcirjs/misc/simcir-dso.js new file mode 100644 index 00000000..97b1d0f0 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir-dso.js @@ -0,0 +1,406 @@ +// +// SimcirJS - DSO +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DSO + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createDSOFactory = function() { + + var colors = [ + '#ff00cc', + '#ffcc00', + '#ccff00', + '#00ffcc', + '#00ccff', + '#cc00ff' + ]; + var timeRanges = [10000, 5000, 2000, 1000]; + var maxTimeRange = timeRanges[0]; + + var createProbe = function(color) { + + var samples = []; + + var model = { + valueRange : 1, + timeRange : maxTimeRange + }; + + var $path = $s.createSVGElement('path'). + css('fill', 'none'). + css('stroke-width', 1). + css('stroke-linejoin', 'bevel'). + css('stroke', color); + + var setValueRange = function(valueRange) { + model.valueRange = valueRange; + }; + + var setTimeRange = function(timeRange) { + model.timeRange = timeRange; + }; + + var update = function(ts, x, y, width, height) { + var d = ''; + for (var i = samples.length - 1; i >= 0; i -= 1) { + var last = i - 1 >= 0 && ts - samples[i - 1].ts > model.timeRange; + var val = samples[i].value; + if (!last && i > 0 && i + 1 < samples.length && + samples[i - 1].value === val && + samples[i + 1].value === val) { + continue; + } + if (typeof val != 'number') { + val = 0; + } + var sx = x + width - (ts - samples[i].ts) / model.timeRange * width; + var sy = y + height - val / model.valueRange * height; + d += d == ''? 'M' : 'L'; + d += sx + ' ' + sy; + if (last) { + break; + } + } + $path.attr('d', d); + }; + + var sample = function(ts, value) { + samples.push({ts: ts, value: value}); + while (ts - samples[0].ts > maxTimeRange) { + samples.shift(); + } + }; + + return { + $ui : $path, + setValueRange : setValueRange, + setTimeRange : setTimeRange, + update : update, + sample : sample + }; + }; + + var createPanel = function() { + + var $lcd = $s.createSVGElement('path'). + css('stroke', 'none').css('fill', '#ffcc00'); + var setLCDText = function(text) { + $lcd.attr('d', createFontPath(text, 4, 4, 1) ); + }; + var $lcdPanel = $s.createSVGElement('g'). + append($s.createSVGElement('rect'). + css('stroke', 'none'). + css('fill', '#000000'). + //size of time range window + attr({x : 0, y : 0, width: unit * 7, height : unit}) ). + append($lcd). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('timeRangeDown'); + }); + $s.transform($lcdPanel, unit * 1.5, 0); + + var $playing = $s.createSVGElement('path'). + attr('d', 'M' + unit / 4 + ' ' + unit / 4 + + 'L' + unit / 4 * 3 + ' ' + unit / 2 + + 'L' + unit / 4 + ' ' + unit / 4 * 3 + 'Z'). + css('stroke-width', 1); + var btnAttr = {x : 0, y : 0, width : unit, height : unit, + rx : 1, ry : 1}; + var $btnRect = $s.createSVGElement('rect'). + attr(btnAttr). + css('stroke', 'none'). + css('fill', '#999999'). + css('opacity', 0); + var $btn = $s.createSVGElement('g'). + append($btnRect). + append($s.createSVGElement('rect'). + attr(btnAttr). + css('stroke-width', 1). + css('stroke', '#666666'). + css('fill', 'none') ). + append($playing). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('playDown'); + }); + + var $panel = $s.createSVGElement('g'). + append($btn).append($lcdPanel); + + return { + $ui : $panel, + setPlaying : function(playing) { + $playing.css('fill', playing? '#00ff00' : '#006600'). + css('stroke', playing? '#00cc00' : '#003300'); + }, + setTimeRange : function(timeRange) { + var unit = 'ms'; + if (timeRange > 5000) { + unit = 's'; + timeRange /= 1000; + } + setLCDText('TimeRange:' + timeRange + unit); + } + }; + }; + + return function(device) { + + var numInputs = Math.max(1, + device.deviceDef.numInputs || 4); + var scale = 1; + var gap = 2; + + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + + var state = device.deviceDef.state || + { playing : true, rangeIndex : 0 }; + device.getState = function() { + return state; + }; + + //external body size + device.getSize = function() { + return { width : unit * 4, + height : unit * (numInputs * scale + 2) }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + //position of display + var $display = $s.createSVGElement('g'); + device.$ui.append($display); + $s.transform($display, unit / 2, unit / 2); + + //Inner LCD size + var $rect = $s.createSVGElement('rect'). + css('stroke', 'none').css('fill', '#000000'). + attr({x: 0, y: 0, width: unit * 3, + height: unit * numInputs * scale }); + $display.append($rect); + + var probes = []; + for (var i = 0; i < device.getInputs().length; i += 1) { + var inNode = device.getInputs()[i]; + $s.transform(inNode.$ui, 0, unit * + (0.5 + 0.5 * scale + i * scale) ); + var probe = createProbe(colors[i % colors.length]); + probes.push(probe); + $display.append(probe.$ui); + } + + var setTimeRange = function(timeRange) { + panel.setTimeRange(timeRange); + for (var i = 0; i < probes.length; i += 1) { + probes[i].setTimeRange(timeRange); + } + }; + + var panel = createPanel(); + panel.$ui.on('playDown', function(event){ + state.playing = !state.playing; + panel.setPlaying(state.playing); + }).on('timeRangeDown', function(event) { + state.rangeIndex = (state.rangeIndex + 1) % timeRanges.length; + setTimeRange(timeRanges[state.rangeIndex]); + }); + device.$ui.append(panel.$ui.css('display', 'none') ); + $s.transform(panel.$ui, unit / 2, + unit * numInputs * scale + unit / 4 * 3); + + panel.setPlaying(state.playing); + setTimeRange(timeRanges[state.rangeIndex] || timeRanges[0]); + + var alive = false; + var render = function(ts) { + for (var i = 0; i < device.getInputs().length; i += 1) { + probes[i].sample(ts, device.getInputs()[i].getValue() ); + if (state.playing) { + probes[i].update(ts, 0, unit * i * scale + gap, + unit * 15, unit * scale - gap * 2); + } + } + if (alive) { + window.requestAnimationFrame(render); + } + }; + + device.$ui.on('deviceAdd', function() { + + device.$ui.children('.simcir-device-body'). + attr('width', unit * 16); + device.$ui.children('.simcir-device-label'). + attr('x', unit * 8); + $rect.attr('width', unit * 15); + panel.$ui.css('display', ''); + + alive = true; + window.requestAnimationFrame(render); + + }).on('deviceRemove', function() { + alive = false; + }); + + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 4, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":4}' + }; + }; + }; + }; + + var createFontPath = function() { + var data = { + "\u0020":[0,0,0,0,0,0,0], + "!":[4,4,4,4,0,0,4], + "\"":[10,10,10,0,0,0,0], + "#":[10,10,31,10,31,10,10], + "$":[4,30,5,14,20,15,4], + "%":[3,19,8,4,2,25,24], + "&":[6,9,5,2,21,9,22], + "'":[6,4,2,0,0,0,0], + "(":[8,4,2,2,2,4,8], + ")":[2,4,8,8,8,4,2], + "*":[0,4,21,14,21,4,0], + "+":[0,4,4,31,4,4,0], + ",":[0,0,0,0,6,4,2], + "-":[0,0,0,31,0,0,0], + ".":[0,0,0,0,0,6,6], + "/":[0,16,8,4,2,1,0], + "0":[14,17,25,21,19,17,14], + "1":[4,6,4,4,4,4,14], + "2":[14,17,16,8,4,2,31], + "3":[31,8,4,8,16,17,14], + "4":[8,12,10,9,31,8,8], + "5":[31,1,15,16,16,17,14], + "6":[12,2,1,15,17,17,14], + "7":[31,16,8,4,2,2,2], + "8":[14,17,17,14,17,17,14], + "9":[14,17,17,30,16,8,6], + ":":[0,6,6,0,6,6,0], + ";":[0,6,6,0,6,4,2], + "<":[8,4,2,1,2,4,8], + "=":[0,0,31,0,31,0,0], + ">":[2,4,8,16,8,4,2], + "?":[14,17,16,8,4,0,4], + "@":[14,17,16,18,21,21,14], + "A":[14,17,17,17,31,17,17], + "B":[15,17,17,15,17,17,15], + "C":[14,17,1,1,1,17,14], + "D":[7,9,17,17,17,9,7], + "E":[31,1,1,15,1,1,31], + "F":[31,1,1,15,1,1,1], + "G":[14,17,1,29,17,17,14], + "H":[17,17,17,31,17,17,17], + "I":[14,4,4,4,4,4,14], + "J":[28,8,8,8,8,9,6], + "K":[17,9,5,3,5,9,17], + "L":[1,1,1,1,1,1,31], + "M":[17,27,21,21,17,17,17], + "N":[17,17,19,21,25,17,17], + "O":[14,17,17,17,17,17,14], + "P":[15,17,17,15,1,1,1], + "Q":[14,17,17,17,21,9,22], + "R":[15,17,17,15,5,9,17], + "S":[30,1,1,14,16,16,15], + "T":[31,4,4,4,4,4,4], + "U":[17,17,17,17,17,17,14], + "V":[17,17,17,17,17,10,4], + "W":[17,17,17,21,21,21,10], + "X":[17,17,10,4,10,17,17], + "Y":[17,17,17,10,4,4,4], + "Z":[31,16,8,4,2,1,31], + "[":[14,2,2,2,2,2,14], + "\\":[0,1,2,4,8,16,0], + "]":[14,8,8,8,8,8,14], + "^":[4,10,17,0,0,0,0], + "_":[0,0,0,0,0,0,31], + "`":[2,4,8,0,0,0,0], + "a":[0,0,14,16,30,17,30], + "b":[1,1,1,15,17,17,15], + "c":[0,0,30,1,1,1,30], + "d":[16,16,16,30,17,17,30], + "e":[0,0,14,17,31,1,30], + "f":[8,20,4,14,4,4,4], + "g":[0,0,30,17,30,16,15], + "h":[1,1,1,15,17,17,17], + "i":[0,4,0,4,4,4,4], + "j":[8,0,8,8,8,9,6], + "k":[2,2,18,10,6,10,18], + "l":[6,4,4,4,4,4,14], + "m":[0,0,27,21,21,21,17], + "n":[0,0,13,19,17,17,17], + "o":[0,0,14,17,17,17,14], + "p":[0,0,15,17,15,1,1], + "q":[0,0,30,17,30,16,16], + "r":[0,0,13,19,1,1,1], + "s":[0,0,30,1,14,16,15], + "t":[4,4,31,4,4,20,8], + "u":[0,0,17,17,17,17,14], + "v":[0,0,17,17,17,10,4], + "w":[0,0,17,17,21,21,10], + "x":[0,0,17,10,4,10,17], + "y":[0,0,17,10,4,4,2], + "z":[0,0,31,8,4,2,31], + "{":[12,2,2,1,2,2,12], + "|":[4,4,4,4,4,4,4], + "}":[6,8,8,16,8,8,6], + "~":[16,14,1,0,0,0,0] + }; + var getCharPath = function(c, x, y, s) { + var d = ''; + var cdata = data[c] || data['?']; + for (var cy = 0; cy < cdata.length; cy += 1) { + for (var cx = 0; cx < 5; cx += 1) { + if ( (cdata[cy] >> cx) & 1) { + d += 'M' + (x + cx) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy + 1) * s; + d += 'L' + (x + cx) * s + ' ' + (y + cy + 1) * s; + d += 'Z'; + } + } + } + return d; + }; + return function(s, x, y, scale) { + scale = scale || 1; + var d = ''; + for (var i = 0; i < s.length; i += 1) { + d += getCharPath(s.charAt(i), x + i * 6, y, scale); + } + return d; + }; + }(); + + $s.registerDevice('DSO', createDSOFactory() ); + +}(simcir); diff --git a/project1/Libraries/simcirjs/misc/simcir-num.js b/project1/Libraries/simcirjs/misc/simcir-num.js new file mode 100644 index 00000000..7b0f08f1 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir-num.js @@ -0,0 +1,328 @@ +// +// SimcirJS - Num +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// NumSrc +// NumDsp + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createNumLabel = function(size) { + var $label = $s.createSVGElement('g'). + css('pointer-events', 'none'). + attr('fill', 'none'). + attr('stroke-width', '2'); + $s.transform($label, size.width / 2, size.height / 2); + var lsize = Math.max(size.width, size.height); + var ratio = 0.65; + $s.controller($label, { + setOn : function(on) { + $label.children().remove(); + if (on) { + var w = lsize / 2 * ratio * 0.5; + var x = w * 0.2; + $label.append($s.createSVGElement('path'). + attr('d', + 'M' + x + ' ' + (lsize / 2 * ratio) + + 'L ' + x + ' ' + -lsize / 2 * ratio + + 'Q' + (x - lsize / 2 * ratio * 0.125) + + ' ' + (-lsize / 2 * ratio * 0.6) + + ' ' + (x - w) + + ' ' + (-lsize / 2 * ratio * 0.5) ). + attr('stroke-linecap' , 'square'). + attr('stroke-linejoin' , 'round') ); + } else { + $label.append($s.createSVGElement('ellipse'). + attr({ cx : 0, cy : 0, + rx : lsize / 2 * ratio * 0.6, ry : lsize / 2 * ratio}). + attr('fill', 'none') ); + } + }, + setColor : function(color) { + $label.attr('stroke', color); + } + }); + return $label; + }; + + var createNumFactory = function(type) { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = type == 'dsp'? device.addInput() : null; + var out1 = type == 'src'? device.addOutput() : null; + + var on = false; + var updateOutput = null; + + var direction = null; + if (device.deviceDef.state) { + direction = device.deviceDef.state.direction; + } + if (typeof direction != 'number') { + direction = type == 'src'? Direction.WE : Direction.EW; + } + + if (type == 'src') { + if (device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return { direction : direction, on : on }; + }; + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + updateOutput = function() { + out1.setValue(on? 1 : null); + }; + updateOutput(); + } else if (type == 'dsp') { + device.getState = function() { + return { direction : direction }; + }; + } + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + var size = device.getSize(); + + device.$ui.css('fill', '#eeeeee'); + + var $button = null; + if (type == 'src') { + $button = $s.createSVGElement('rect'). + attr({x: 1, y: 1, width: size.width - 2, height: size.height - 2, + rx: 2, ry: 2, stroke: 'none', fill: '#cccccc'}). + append($s.createSVGElement('title') ); + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + on = !on; + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + }; + var button_mouseUpHandler = function(event) { + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + $button.on('dblclick', button_dblClickHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + $button.off('dblclick', button_dblClickHandler); + }); + var out1_setValue = out1.setValue; + out1.setValue = function(value) { + out1_setValue(value); + $s.controller($numLabel).setOn(out1.getValue() != null); + }; + } + + var $numLabel = createNumLabel(size); + $s.controller($numLabel).setColor('#000000'); + device.$ui.append($numLabel); + + if (type == 'src') { + $s.controller($numLabel).setOn(out1.getValue() != null); + } else if (type == 'dsp') { + $s.controller($numLabel).setOn(false); + device.$ui.on('inputValueChange', function() { + $s.controller($numLabel).setOn(in1.getValue() != null); + }); + } + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + if (type == 'src') { + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr('cx', size.width).attr('cy', size.height / 2).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + } + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + if (direction == Direction.WE) { + x0 += d; + x1 += unit; + } else if (direction == Direction.NS) { + y0 += d * 1.25; + y1 += unit; + } else if (direction == Direction.EW) { + x0 -= d; + x1 -= unit; + } else if (direction == Direction.SN) { + y0 -= d * 1.25; + y1 -= unit; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + if (type == 'src') { + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + } else if (type == 'dsp') { + $s.transform(in1.$ui, x1, y1); + } + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: -unit / 2, y: 0, width: unit * 2, height: unit}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: -unit / 2, width: unit, height: unit * 2}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + if (type == 'src') { + $button.css('opacity', opacity); + $point.css('opacity', 1 - opacity); + } + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + direction = (direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + $s.registerDevice('NumSrc', createNumFactory('src') ); + $s.registerDevice('NumDsp', createNumFactory('dsp') ); + +}(simcir); diff --git a/project1/Libraries/simcirjs/misc/simcir-transmitter.js b/project1/Libraries/simcirjs/misc/simcir-transmitter.js new file mode 100644 index 00000000..c9a08c30 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir-transmitter.js @@ -0,0 +1,325 @@ +// +// SimcirJS - Transmitter +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Transmitter + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createTransmitterFactory = function() { + + var emptyGroup = { + getValue : function() { return null; }, + setValue : function(value, force) {}, + getInput : function() { return null; }, + setInput : function(device) {} + }; + + var createGroup = function(devices) { + var input = function() { + for (var i = 0; i < devices.length; i += 1) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + return devices[i]; + } + } + return null; + }(); + return { + getValue : function() { + return input != null? input.getInputs()[0].getValue() : null; + }, + setValue : function(value, force) { + for (var i = 0; i < devices.length; i += 1) { + devices[i].getOutputs()[0].setValue(value, force); + } + }, + getInput : function() { + return input; + }, + setInput : function(device) { + input = device; + for (var i = 0; i < devices.length; i += 1) { + if (devices[i] != device) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + } + } + } + }; + }; + + var createGroupByLabel = function(devices) { + var devicesByLabel = {}; + for (var id in devices) { + var device = devices[id]; + var label = device.getLabel(); + if (!devicesByLabel[label]) { + devicesByLabel[label] = []; + } + devicesByLabel[label].push(device); + } + var groupByLabel = {}; + for (var label in devicesByLabel) { + groupByLabel[label] = createGroup(devicesByLabel[label]); + } + return groupByLabel; + }; + + var createGroupManager = function() { + + var devices = {}; + var idCount = 0; + var groupCache = null; + + var register = function(device) { + var id = 'id' + idCount++; + if (device.headless) { + devices[id] = device; + reset(); + } else { + device.$ui.on('deviceAdd', function() { + devices[id] = device; + reset(); + }).on('deviceRemove', function() { + delete devices[id]; + reset(); + }); + } + }; + + var reset = function() { + groupCache = null; + }; + + var getGroupByLabel = function(label) { + if (!groupCache) { + groupCache = createGroupByLabel(devices); + } + return groupCache[label] || emptyGroup; + }; + + return { + register : register, + reset : reset, + getGroupByLabel : getGroupByLabel + }; + }; + + var maxFadeCount = 16; + var fadeTimeout = 100; + var getEmptyGroupByLabel = function(label) { return emptyGroup; }; + + return function(device) { + + var getGroupByLabel = getEmptyGroupByLabel; + if (device.scope) { + var groupManager = device.scope.transmitterGroupManager; + if (!groupManager) { + groupManager = createGroupManager(); + device.scope.transmitterGroupManager = groupManager; + } + groupManager.register(device); + getGroupByLabel = function(label) { + return groupManager.getGroupByLabel(label); + }; + } + + var in1 = device.addInput(); + var out1 = device.addOutput(); + var lastLabel = device.getLabel(); + + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + getGroupByLabel(device.getLabel() ).setValue(in1.getValue(), force); + } + }; + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + if (outNode != null) { + getGroupByLabel(device.getLabel() ).setInput(device); + } + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + + var $label = device.$ui.children('.simcir-device-label'); + var defaultLabelX = +$label.attr('x'); + var defaultLabelY = +$label.attr('y'); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr({cx: unit / 2, cy: unit / 2, r: 2}). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var updateUI = function() { + + var isInSet = in1.getOutput() != null; + var isOutSet = out1.getInputs().length > 0; + + var x0, y0, x1, y1, cx, cy; + x0 = y0 = x1 = y1 = cx = cy = unit / 2; + var d = unit / 2; + x0 -= d; + x1 += d; + if (isInSet && isOutSet) { + } else if (isInSet) { + cx += d; + } else if (isOutSet) { + cx -= d; + } + $point.attr('cx', cx).attr('cy', cy); + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + + var labelX = defaultLabelX; + var labelY = defaultLabelY; + var anchor = 'middle'; + if (isInSet && isOutSet) { + labelY -= unit / 4; + } else if (!isInSet && !isOutSet) { + labelY -= unit / 4; + } else if (isInSet) { + labelX += unit; + labelY -= unit; + anchor = 'start'; + } else if (isOutSet) { + labelX -= unit; + labelY -= unit; + anchor = 'end'; + } + $label.attr('x', labelX).attr('y', labelY). + attr('text-anchor', anchor); + }; + + updateUI(); + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + updateUI(); + }; + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updateUI(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updateUI(); + }; + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var device_mouseoutHandler = function(event) { + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + + device.$ui.on('mouseover', function(event) { + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + out1.setValue(getGroupByLabel(device.getLabel() ).getValue() ); + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).on('mouseout', device_mouseoutHandler); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler); + }).on('deviceLabelChange', function() { + + groupManager.reset(); + + var lastGrp = getGroupByLabel(lastLabel); + lastGrp.setValue(lastGrp.getValue() ); + + var newLabel = device.getLabel(); + var newGrp = getGroupByLabel(newLabel); + if (in1.getOutput() != null) { + newGrp.setInput(device); + } + newGrp.setValue(newGrp.getValue() ); + + lastLabel = newLabel; + + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + description: + 'Transmit a signal to another trasmitter that has same label.', + params: [], + code: '{"type":"' + device.deviceDef.type + '"}' + }; + }; + }; + }; + + $s.registerDevice('Transmitter', createTransmitterFactory() ); + +}(simcir); diff --git a/project1/Libraries/simcirjs/misc/simcir.d.ts b/project1/Libraries/simcirjs/misc/simcir.d.ts new file mode 100644 index 00000000..e8de5c02 --- /dev/null +++ b/project1/Libraries/simcirjs/misc/simcir.d.ts @@ -0,0 +1,127 @@ +// +// SimcirJS - TypeScript Declaration File +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +interface SimcirPoint { x: number, y: number } +interface SimcirSize { width: number, height: number } +interface SimcirRect extends SimcirPoint, SimcirSize {} + +interface SimcirEvent { target: JQuery, type: string } + +interface SimcirGraphics { + attr: { [name : string] : (string|number) }; + moveTo(x: number, y: number) : void; + lineTo(x: number, y: number) : void; + curveTo(x1: number, y1: number, x: number, y: number) : void; + closePath(close?: boolean) : void; + drawRect(x: number, y: number, width: number, height: number) : void; + drawCircle(x: number, y: number, r: number) : void; +} + +interface SimcirNode { + type: string; + label: string; + description: string; + $ui: JQuery; + headless: boolean; + getValue() : any; + setValue(value : any, force? : boolean) : void; +} + +interface SimcirInputNode extends SimcirNode { + setOutput(outNode : SimcirNode) : void; + getOutput() : SimcirOutputNode; +} + +interface SimcirOutputNode extends SimcirNode { + getInputs() : SimcirInputNode[]; + connectTo(inNode : SimcirInputNode) : void; + disconnectFrom(inNode : SimcirInputNode) : void; +} + +interface SimcirDeviceDefBase { [id : string] : string|number } + +interface SimcirDeviceDef extends SimcirDeviceDefBase { + type: string; + label?: string; +} + +interface SimcirDeviceInstance extends SimcirDeviceDef { + id: string; + x: number; + y: number; +} + +interface SimcirDocument { params: SimcirParamDescription[]; code: string; } + +interface SimcirParamDescription { + name: string; + type: string; + defaultValue: any; + description: string; +} + +interface SimcirDevice { + $ui: JQuery; + doc: SimcirDocument; + halfPitch: boolean; + headless: boolean; + scope: any; + deviceDef: Def; + addInput(label? : string, description? : string) : SimcirInputNode; + getInputs() : SimcirInputNode[]; + addOutput(label? : string, description? : string) : SimcirOutputNode; + getOutputs() : SimcirOutputNode[]; + getLabel() : string; + getSize() : SimcirSize; + createUI() : void; + getState() : any; +} + +interface SimcirConnectorDef { from: string; to: string; } + +interface SimcirData { + width?: number; + height?: number; + toolbox?: SimcirDeviceDef[]; + showToolbox?: boolean; + editable?: boolean; + layout? : SimcirCustomLayout; + devices?: SimcirDeviceInstance[]; + connectors?: SimcirConnectorDef[]; +} + +interface SimcirCustomLayout { + rows: number; + cols: number; + hideLabelOnWorkspace?: boolean; + nodes: { [label : string] : string }; +} + +type SimcirTypeFactory = (device : Def) => void; + +interface Simcir { + unit: number; + createSVGElement(tagName: string) : JQuery; + graphics($target: JQuery) : SimcirGraphics; + offset($o: JQuery) : SimcirPoint; + transform($o: JQuery, x: number, y: number, rotate: number) : void; + transform($o: JQuery) : { x: number; y: number; rotate: number; }; + enableEvents($o: JQuery, enable: boolean) : void; + controller($ui: JQuery, controller: any) : void; + controller($ui: JQuery) : any; + registerDevice(type: string, factory: SimcirTypeFactory) : void; + registerDevice(type: string, data: SimcirData) : void; + clearSimcir($placeHolder: JQuery) : JQuery; + setupSimcir($placeHolder: JQuery, data: SimcirData) : JQuery; + createWorkspace(data: SimcirData) : JQuery; +} + +declare var simcir : Simcir; diff --git a/project1/Libraries/simcirjs/simcir-basicset.css b/project1/Libraries/simcirjs/simcir-basicset.css new file mode 100644 index 00000000..9c163744 --- /dev/null +++ b/project1/Libraries/simcirjs/simcir-basicset.css @@ -0,0 +1,44 @@ +/* + * SimcirJS - basicset + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-basicset-dc { + fill: #ffcccc; +} + +.simcir-basicset-switch { + fill: #ccccff; +} + +.simcir-basicset-switch-button-pressed { + fill: #9999cc; +} + +.simcir-basicset-symbol { + stroke: #000000; + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; +} + +.simcir-basicset-osc { + fill: #ffcccc; +} + +.simcir-basicset-knob { + stroke: none; + fill: #333333; +} + +.simcir-basicset-knob-mark { + stroke: #ffffff; + stroke-width: 3; +} diff --git a/project1/Libraries/simcirjs/simcir-basicset.js b/project1/Libraries/simcirjs/simcir-basicset.js new file mode 100644 index 00000000..dbb3c67f --- /dev/null +++ b/project1/Libraries/simcirjs/simcir-basicset.js @@ -0,0 +1,837 @@ +// +// SimcirJS - basicset +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DC +// LED +// PushOff +// PushOn +// Toggle +// BUF +// NOT +// AND +// NAND +// OR +// NOR +// EOR +// ENOR +// OSC +// 7seg +// 16seg +// 4bit7seg +// RotaryEncoder +// BusIn +// BusOut + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + // red/black + var defaultLEDColor = '#ff0000'; + var defaultLEDBgColor = '#000000'; + + var multiplyColor = function() { + var HEX = '0123456789abcdef'; + var toIColor = function(sColor) { + if (!sColor) { + return 0; + } + sColor = sColor.toLowerCase(); + if (sColor.match(/^#[0-9a-f]{3}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt( (i >> 1) + 1) ); + } + return iColor; + } else if (sColor.match(/^#[0-9a-f]{6}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt(i + 1) ); + } + return iColor; + } + return 0; + }; + var toSColor = function(iColor) { + var sColor = '#'; + for (var i = 0; i < 6; i += 1) { + sColor += HEX.charAt( (iColor >>> (5 - i) * 4) & 0x0f); + } + return sColor; + }; + var toRGB = function(iColor) { + return { + r: (iColor >>> 16) & 0xff, + g: (iColor >>> 8) & 0xff, + b: iColor & 0xff}; + }; + var multiplyColor = function(iColor1, iColor2, ratio) { + var c1 = toRGB(iColor1); + var c2 = toRGB(iColor2); + var mc = function(v1, v2, ratio) { + return ~~Math.max(0, Math.min( (v1 - v2) * ratio + v2, 255) ); + }; + return (mc(c1.r, c2.r, ratio) << 16) | + (mc(c1.g, c2.g, ratio) << 8) | mc(c1.b, c2.b, ratio); + }; + return function(color1, color2, ratio) { + return toSColor(multiplyColor( + toIColor(color1), toIColor(color2), ratio) ); + }; + }(); + + // symbol draw functions + var drawBUF = function(g, x, y, width, height) { + g.moveTo(x, y); + g.lineTo(x + width, y + height / 2); + g.lineTo(x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawAND = function(g, x, y, width, height) { + g.moveTo(x, y); + g.curveTo(x + width, y, x + width, y + height / 2); + g.curveTo(x + width, y + height, x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawOR = function(g, x, y, width, height) { + var depth = width * 0.2; + g.moveTo(x, y); + g.curveTo(x + width - depth, y, x + width, y + height / 2); + g.curveTo(x + width - depth, y + height, x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(true); + }; + var drawEOR = function(g, x, y, width, height) { + drawOR(g, x + 3, y, width - 3, height); + var depth = (width - 3) * 0.2; + g.moveTo(x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(); + }; + var drawNOT = function(g, x, y, width, height) { + drawBUF(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNAND = function(g, x, y, width, height) { + drawAND(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNOR = function(g, x, y, width, height) { + drawOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawENOR = function(g, x, y, width, height) { + drawEOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + // logical functions + var AND = function(a, b) { return a & b; }; + var OR = function(a, b) { return a | b; }; + var EOR = function(a, b) { return a ^ b; }; + var BUF = function(a) { return (a == 1)? 1 : 0; }; + var NOT = function(a) { return (a == 1)? 0 : 1; }; + + var onValue = 1; + var offValue = null; + var isHot = function(v) { return v != null; }; + var intValue = function(v) { return isHot(v)? 1 : 0; }; + + var createSwitchFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + var on = (type == 'PushOff'); + + if (type == 'Toggle' && device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return type == 'Toggle'? { on : on } : null; + }; + + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + var updateOutput = function() { + out1.setValue(on? in1.getValue() : null); + }; + updateOutput(); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var $button = $s.createSVGElement('rect'). + attr({x: size.width / 4, y: size.height / 4, + width: size.width / 2, height: size.height / 2, + rx: 2, ry: 2}); + $button.addClass('simcir-basicset-switch-button'); + if (type == 'Toggle' && on) { + $button.addClass('simcir-basicset-switch-button-pressed'); + } + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + if (type == 'PushOn') { + on = true; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = false; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + on = !on; + $button.addClass('simcir-basicset-switch-button-pressed'); + } + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_mouseUpHandler = function(event) { + if (type == 'PushOn') { + on = false; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = true; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + // keep state + if (!on) { + $button.removeClass('simcir-basicset-switch-button-pressed'); + } + } + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + }); + device.$ui.addClass('simcir-basicset-switch'); + }; + }; + }; + + var createLogicGateFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + /* + var segBase = function() { + return { + width: 0, + height: 0, + allSegments: '', + drawSegment: function(g, segment, color) {}, + drawPoint: function(g, color) {} + }; + }; + */ + + var _7Seg = function() { + var _SEGMENT_DATA = { + a: [575, 138, 494, 211, 249, 211, 194, 137, 213, 120, 559, 120], + b: [595, 160, 544, 452, 493, 500, 459, 456, 500, 220, 582, 146], + c: [525, 560, 476, 842, 465, 852, 401, 792, 441, 562, 491, 516], + d: [457, 860, 421, 892, 94, 892, 69, 864, 144, 801, 394, 801], + e: [181, 560, 141, 789, 61, 856, 48, 841, 96, 566, 148, 516], + f: [241, 218, 200, 453, 150, 500, 115, 454, 166, 162, 185, 145], + g: [485, 507, 433, 555, 190, 555, 156, 509, 204, 464, 451, 464] + }; + return { + width: 636, + height: 1000, + allSegments: 'abcdefg', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(542, 840, 46); + } + }; + }(); + + var _16Seg = function() { + var _SEGMENT_DATA = { + a: [255, 184, 356, 184, 407, 142, 373, 102, 187, 102], + b: [418, 144, 451, 184, 552, 184, 651, 102, 468, 102], + c: [557, 190, 507, 455, 540, 495, 590, 454, 656, 108], + d: [487, 550, 438, 816, 506, 898, 573, 547, 539, 507], + e: [281, 863, 315, 903, 500, 903, 432, 821, 331, 821], + f: [35, 903, 220, 903, 270, 861, 236, 821, 135, 821], + g: [97, 548, 30, 897, 129, 815, 180, 547, 147, 507], + h: [114, 455, 148, 495, 198, 454, 248, 189, 181, 107], + i: [233, 315, 280, 452, 341, 493, 326, 331, 255, 200], + j: [361, 190, 334, 331, 349, 485, 422, 312, 445, 189, 412, 149], + k: [430, 316, 354, 492, 432, 452, 522, 334, 547, 200], + l: [354, 502, 408, 542, 484, 542, 534, 500, 501, 460, 434, 460], + m: [361, 674, 432, 805, 454, 691, 405, 550, 351, 509], + n: [265, 693, 242, 816, 276, 856, 326, 815, 353, 676, 343, 518], + o: [255, 546, 165, 671, 139, 805, 258, 689, 338, 510], + p: [153, 502, 187, 542, 254, 542, 338, 500, 278, 460, 203, 460] + }; + return { + width: 690, + height: 1000, + allSegments: 'abcdefghijklmnop', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(610, 900, 30); + } + }; + }(); + + var drawSeg = function(seg, g, pattern, hiColor, loColor, bgColor) { + g.attr['stroke'] = 'none'; + if (bgColor) { + g.attr['fill'] = bgColor; + g.drawRect(0, 0, seg.width, seg.height); + } + var on; + for (var i = 0; i < seg.allSegments.length; i += 1) { + var c = seg.allSegments.charAt(i); + on = (pattern != null && pattern.indexOf(c) != -1); + seg.drawSegment(g, c, on? hiColor : loColor); + } + on = (pattern != null && pattern.indexOf('.') != -1); + seg.drawPoint(g, on? hiColor : loColor); + }; + + var createSegUI = function(device, seg) { + var size = device.getSize(); + var sw = seg.width; + var sh = seg.height; + var dw = size.width - unit; + var dh = size.height - unit; + var scale = (sw / sh > dw / dh)? dw / sw : dh / sh; + var tx = (size.width - seg.width * scale) / 2; + var ty = (size.height - seg.height * scale) / 2; + return $s.createSVGElement('g'). + attr('transform', 'translate(' + tx + ' ' + ty + ')' + + ' scale(' + scale + ') '); + }; + + var createLEDSegFactory = function(seg) { + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var allSegs = seg.allSegments + '.'; + device.halfPitch = true; + for (var i = 0; i < allSegs.length; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var segs = ''; + for (var i = 0; i < allSegs.length; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + segs += allSegs.charAt(i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), segs, + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createLED4bitFactory = function() { + + var _PATTERNS = { + 0: 'abcdef', + 1: 'bc', + 2: 'abdeg', + 3: 'abcdg', + 4: 'bcfg', + 5: 'acdfg', + 6: 'acdefg', + 7: 'abc', + 8: 'abcdefg', + 9: 'abcdfg', + a: 'abcefg', + b: 'cdefg', + c: 'adef', + d: 'bcdeg', + e: 'adefg', + f: 'aefg' + }; + + var getPattern = function(value) { + return _PATTERNS['0123456789abcdef'.charAt(value)]; + }; + + var seg = _7Seg; + + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + for (var i = 0; i < 4; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var value = 0; + for (var i = 0; i < 4; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + value += (1 << i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), getPattern(value), + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createRotaryEncoderFactory = function() { + var _MIN_ANGLE = 45; + var _MAX_ANGLE = 315; + var thetaToAngle = function(theta) { + var angle = (theta - Math.PI / 2) / Math.PI * 180; + while (angle < 0) { + angle += 360; + } + while (angle > 360) { + angle -= 360; + } + return angle; + }; + return function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 4); + device.halfPitch = numOutputs > 4; + device.addInput(); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + + var $knob = $s.createSVGElement('g'). + attr('class', 'simcir-basicset-knob'). + append($s.createSVGElement('rect'). + attr({x:-10,y:-10,width:20,height:20})); + var r = Math.min(size.width, size.height) / 4 * 1.5; + var g = $s.graphics($knob); + g.drawCircle(0, 0, r); + g.attr['class'] = 'simcir-basicset-knob-mark'; + g.moveTo(0, 0); + g.lineTo(r, 0); + g.closePath(); + device.$ui.append($knob); + + var _angle = _MIN_ANGLE; + var setAngle = function(angle) { + _angle = Math.max(_MIN_ANGLE, Math.min(angle, _MAX_ANGLE) ); + update(); + }; + + var dragPoint = null; + var knob_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + dragPoint = {x: event.pageX, y: event.pageY}; + $(document).on('mousemove', knob_mouseMoveHandler); + $(document).on('mouseup', knob_mouseUpHandler); + }; + var knob_mouseMoveHandler = function(event) { + var off = $knob.parent('svg').offset(); + var pos = $s.offset($knob); + var cx = off.left + pos.x; + var cy = off.top + pos.y; + var dx = event.pageX - cx; + var dy = event.pageY - cy; + if (dx == 0 && dy == 0) return; + setAngle(thetaToAngle(Math.atan2(dy, dx) ) ); + }; + var knob_mouseUpHandler = function(event) { + $(document).off('mousemove', knob_mouseMoveHandler); + $(document).off('mouseup', knob_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($knob, true); + $knob.on('mousedown', knob_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($knob, false); + $knob.off('mousedown', knob_mouseDownHandler); + }); + + var update = function() { + $s.transform($knob, size.width / 2, + size.height / 2, _angle + 90); + var max = 1 << numOutputs; + var value = Math.min( ( (_angle - _MIN_ANGLE) / + (_MAX_ANGLE - _MIN_ANGLE) * max), max - 1); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue( (value & (1 << i) )? + device.getInputs()[0].getValue() : null); + } + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 4, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":4}' + }; + }; + }; + }; + + // register direct current source + $s.registerDevice('DC', function(device) { + device.addOutput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-dc'); + }; + device.$ui.on('deviceAdd', function() { + device.getOutputs()[0].setValue(onValue); + }); + device.$ui.on('deviceRemove', function() { + device.getOutputs()[0].setValue(null); + }); + }); + + // register simple LED + $s.registerDevice('LED', function(device) { + var in1 = device.addInput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var bLoColor = multiplyColor(hiColor, bgColor, 0.2); + var bHiColor = multiplyColor(hiColor, bgColor, 0.8); + var size = device.getSize(); + var $ledbase = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4}). + attr('stroke', 'none'). + attr('fill', bLoColor); + device.$ui.append($ledbase); + var $led = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4 * 0.8}). + attr('stroke', 'none'). + attr('fill', loColor); + device.$ui.append($led); + device.$ui.on('inputValueChange', function() { + $ledbase.attr('fill', isHot(in1.getValue() )? bHiColor : bLoColor); + $led.attr('fill', isHot(in1.getValue() )? hiColor : loColor); + }); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }); + + // register switches + $s.registerDevice('PushOff', createSwitchFactory('PushOff') ); + $s.registerDevice('PushOn', createSwitchFactory('PushOn') ); + $s.registerDevice('Toggle', createSwitchFactory('Toggle') ); + + // register logic gates + $s.registerDevice('BUF', createLogicGateFactory(null, BUF, drawBUF) ); + $s.registerDevice('NOT', createLogicGateFactory(null, NOT, drawNOT) ); + $s.registerDevice('AND', createLogicGateFactory(AND, BUF, drawAND) ); + $s.registerDevice('NAND', createLogicGateFactory(AND, NOT, drawNAND) ); + $s.registerDevice('OR', createLogicGateFactory(OR, BUF, drawOR) ); + $s.registerDevice('NOR', createLogicGateFactory(OR, NOT, drawNOR) ); + $s.registerDevice('XOR', createLogicGateFactory(EOR, BUF, drawEOR) ); + $s.registerDevice('XNOR', createLogicGateFactory(EOR, NOT, drawENOR) ); + // deprecated. not displayed in the default toolbox. + $s.registerDevice('EOR', createLogicGateFactory(EOR, BUF, drawEOR), true); + $s.registerDevice('ENOR', createLogicGateFactory(EOR, NOT, drawENOR), true); + + // register Oscillator + $s.registerDevice('OSC', function(device) { + var freq = device.deviceDef.freq || 10; + var delay = ~~(500 / freq); + var out1 = device.addOutput(); + var timerId = null; + var on = false; + device.$ui.on('deviceAdd', function() { + timerId = window.setInterval(function() { + out1.setValue(on? onValue : offValue); + on = !on; + }, delay); + }); + device.$ui.on('deviceRemove', function() { + if (timerId != null) { + window.clearInterval(timerId); + timerId = null; + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-osc'); + device.doc = { + params: [ + {name: 'freq', type: 'number', defaultValue: '10', + description: 'frequency of an oscillator.'} + ], + code: '{"type":"' + device.deviceDef.type + '","freq":10}' + }; + }; + }); + + // register LED seg + $s.registerDevice('7seg', createLEDSegFactory(_7Seg) ); + $s.registerDevice('16seg', createLEDSegFactory(_16Seg) ); + $s.registerDevice('4bit7seg', createLED4bitFactory() ); + + // register Rotary Encoder + $s.registerDevice('RotaryEncoder', createRotaryEncoderFactory() ); + + $s.registerDevice('BusIn', function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 8); + device.halfPitch = true; + device.addInput('', 'x' + numOutputs); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + var extractValue = function(busValue, i) { + return (busValue != null && typeof busValue == 'object' && + typeof busValue[i] != 'undefined')? busValue[i] : null; + }; + device.$ui.on('inputValueChange', function() { + var busValue = device.getInputs()[0].getValue(); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue(extractValue(busValue, i) ); + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 8, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":8}' + }; + }; + }); + + $s.registerDevice('BusOut', function(device) { + var numInputs = Math.max(2, device.deviceDef.numInputs || 8); + device.halfPitch = true; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput('', 'x' + numInputs); + device.$ui.on('inputValueChange', function() { + var busValue = []; + var hotCount = 0; + for (var i = 0; i < numInputs; i += 1) { + var value = device.getInputs()[i].getValue(); + if (isHot(value) ) { + hotCount += 1; + } + busValue.push(value); + } + device.getOutputs()[0].setValue( + (hotCount > 0)? busValue : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numInputs', type: 'number', defaultValue: 8, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":8}' + }; + }; + }); + +}(simcir); diff --git a/project1/Libraries/simcirjs/simcir-library.js b/project1/Libraries/simcirjs/simcir-library.js new file mode 100644 index 00000000..56af21f3 --- /dev/null +++ b/project1/Libraries/simcirjs/simcir-library.js @@ -0,0 +1,538 @@ +// +// SimcirJS - library +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// RS-FF +// JK-FF +// T-FF +// D-FF +// 8bitCounter +// HalfAdder +// FullAdder +// 4bitAdder +// 2to4BinaryDecoder +// 3to8BinaryDecoder +// 4to16BinaryDecoder + +simcir.registerDevice('RS-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"NAND","id":"dev0","x":184,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev1","x":184,"y":80,"label":"NAND"}, + {"type":"In","id":"dev2","x":136,"y":24,"label":"~S"}, + {"type":"In","id":"dev3","x":136,"y":88,"label":"~R"}, + {"type":"Out","id":"dev4","x":232,"y":32,"label":"Q"}, + {"type":"Out","id":"dev5","x":232,"y":80,"label":"~Q"}, + {"type":"PushOff","id":"dev6","x":88,"y":24,"label":"PushOff"}, + {"type":"PushOff","id":"dev7","x":88,"y":88,"label":"PushOff"}, + {"type":"DC","id":"dev8","x":40,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev1.in1","to":"dev3.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev1.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('JK-FF', +{ + "width":480, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"RS-FF","id":"dev0","x":216,"y":112,"label":"RS-FF"}, + {"type":"RS-FF","id":"dev1","x":344,"y":112,"label":"RS-FF"}, + {"type":"NAND","numInputs":3,"id":"dev2","x":168,"y":80,"label":"NAND"}, + {"type":"NAND","numInputs":3,"id":"dev3","x":168,"y":144,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":296,"y":80,"label":"NAND"}, + {"type":"NAND","id":"dev5","x":296,"y":144,"label":"NAND"}, + {"type":"NOT","id":"dev6","x":168,"y":24,"label":"NOT"}, + {"type":"In","id":"dev7","x":120,"y":64,"label":"J"}, + {"type":"In","id":"dev8","x":120,"y":112,"label":"CLK"}, + {"type":"In","id":"dev9","x":120,"y":160,"label":"K"}, + {"type":"Out","id":"dev10","x":424,"y":80,"label":"Q"}, + {"type":"Out","id":"dev11","x":424,"y":144,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":72,"y":64,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":72,"y":112,"label":"PushOn"}, + {"type":"Toggle","id":"dev14","x":72,"y":160,"label":"Toggle"}, + {"type":"DC","id":"dev15","x":24,"y":112,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev7.out0"}, + {"from":"dev2.in2","to":"dev8.out0"}, + {"from":"dev3.in0","to":"dev8.out0"}, + {"from":"dev3.in1","to":"dev9.out0"}, + {"from":"dev3.in2","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev4.in1","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev0.out1"}, + {"from":"dev5.in1","to":"dev6.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev12.out0"}, + {"from":"dev8.in0","to":"dev13.out0"}, + {"from":"dev9.in0","to":"dev14.out0"}, + {"from":"dev10.in0","to":"dev1.out0"}, + {"from":"dev11.in0","to":"dev1.out1"}, + {"from":"dev12.in0","to":"dev15.out0"}, + {"from":"dev13.in0","to":"dev15.out0"}, + {"from":"dev14.in0","to":"dev15.out0"} + ] +} +); + +simcir.registerDevice('T-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"JK-FF","id":"dev0","x":168,"y":48,"label":"JK-FF"}, + {"type":"In","id":"dev1","x":120,"y":32,"label":"T"}, + {"type":"In","id":"dev2","x":120,"y":80,"label":"CLK"}, + {"type":"Out","id":"dev3","x":248,"y":32,"label":"Q"}, + {"type":"Out","id":"dev4","x":248,"y":80,"label":"~Q"}, + {"type":"Toggle","id":"dev5","x":72,"y":32,"label":"Toggle"}, + {"type":"PushOn","id":"dev6","x":72,"y":80,"label":"PushOn"}, + {"type":"DC","id":"dev7","x":24,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev0.in1","to":"dev2.out0"}, + {"from":"dev0.in2","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev4.in0","to":"dev0.out1"}, + {"from":"dev5.in0","to":"dev7.out0"}, + {"from":"dev6.in0","to":"dev7.out0"} + ] +} +); + +simcir.registerDevice('D-FF', +{ + "width":540, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":128,"y":24,"label":"D"}, + {"type":"In","id":"dev1","x":168,"y":128,"label":"CLK"}, + {"type":"NOT","id":"dev2","x":176,"y":64,"label":"NOT"}, + {"type":"NAND","id":"dev3","x":224,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":224,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev5","x":272,"y":64,"label":"RS-FF"}, + {"type":"NOT","id":"dev6","x":296,"y":128,"label":"NOT"}, + {"type":"NAND","id":"dev7","x":352,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev8","x":352,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev9","x":400,"y":64,"label":"RS-FF"}, + {"type":"Out","id":"dev10","x":480,"y":32,"label":"Q"}, + {"type":"Out","id":"dev11","x":480,"y":96,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":80,"y":24,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":80,"y":128,"label":"PushOn"}, + {"type":"DC","id":"dev14","x":32,"y":72,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev12.out0"}, + {"from":"dev1.in0","to":"dev13.out0"}, + {"from":"dev2.in0","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev4.in1","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev1.out0"}, + {"from":"dev7.in0","to":"dev5.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev6.out0"}, + {"from":"dev8.in1","to":"dev5.out1"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev8.out0"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev9.out1"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev13.in0","to":"dev14.out0"} + ] +} +); + +simcir.registerDevice('8bitCounter', +{ + "width":320, + "height":420, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"T-FF","id":"dev0","x":184,"y":16,"label":"T-FF"}, + {"type":"T-FF","id":"dev1","x":184,"y":64,"label":"T-FF"}, + {"type":"T-FF","id":"dev2","x":184,"y":112,"label":"T-FF"}, + {"type":"T-FF","id":"dev3","x":184,"y":160,"label":"T-FF"}, + {"type":"T-FF","id":"dev4","x":184,"y":208,"label":"T-FF"}, + {"type":"T-FF","id":"dev5","x":184,"y":256,"label":"T-FF"}, + {"type":"T-FF","id":"dev6","x":184,"y":304,"label":"T-FF"}, + {"type":"T-FF","id":"dev7","x":184,"y":352,"label":"T-FF"}, + {"type":"Out","id":"dev8","x":264,"y":16,"label":"D0"}, + {"type":"Out","id":"dev9","x":264,"y":64,"label":"D1"}, + {"type":"Out","id":"dev10","x":264,"y":112,"label":"D2"}, + {"type":"Out","id":"dev11","x":264,"y":160,"label":"D3"}, + {"type":"Out","id":"dev12","x":264,"y":208,"label":"D4"}, + {"type":"Out","id":"dev13","x":264,"y":256,"label":"D5"}, + {"type":"Out","id":"dev14","x":264,"y":304,"label":"D6"}, + {"type":"Out","id":"dev15","x":264,"y":352,"label":"D7"}, + {"type":"In","id":"dev16","x":120,"y":16,"label":"T"}, + {"type":"In","id":"dev17","x":120,"y":112,"label":"CLK"}, + {"type":"PushOn","id":"dev18","x":72,"y":112,"label":"PushOn"}, + {"type":"DC","id":"dev19","x":24,"y":16,"label":"DC"}, + {"type":"Toggle","id":"dev20","x":72,"y":16,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev16.out0"}, + {"from":"dev0.in1","to":"dev17.out0"}, + {"from":"dev1.in0","to":"dev16.out0"}, + {"from":"dev1.in1","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev16.out0"}, + {"from":"dev2.in1","to":"dev1.out0"}, + {"from":"dev3.in0","to":"dev16.out0"}, + {"from":"dev3.in1","to":"dev2.out0"}, + {"from":"dev4.in0","to":"dev16.out0"}, + {"from":"dev4.in1","to":"dev3.out0"}, + {"from":"dev5.in0","to":"dev16.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev6.in1","to":"dev5.out0"}, + {"from":"dev7.in0","to":"dev16.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev9.in0","to":"dev1.out0"}, + {"from":"dev10.in0","to":"dev2.out0"}, + {"from":"dev11.in0","to":"dev3.out0"}, + {"from":"dev12.in0","to":"dev4.out0"}, + {"from":"dev13.in0","to":"dev5.out0"}, + {"from":"dev14.in0","to":"dev6.out0"}, + {"from":"dev15.in0","to":"dev7.out0"}, + {"from":"dev16.in0","to":"dev20.out0"}, + {"from":"dev17.in0","to":"dev18.out0"}, + {"from":"dev18.in0","to":"dev19.out0"}, + {"from":"dev20.in0","to":"dev19.out0"} + ] +} +); + +simcir.registerDevice('HalfAdder', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"Toggle","id":"dev0","x":96,"y":80,"label":"Toggle"}, + {"type":"DC","id":"dev1","x":48,"y":56,"label":"DC"}, + {"type":"AND","id":"dev2","x":192,"y":80,"label":"AND"}, + {"type":"XOR","id":"dev3","x":192,"y":32,"label":"XOR"}, + {"type":"In","id":"dev4","x":144,"y":32,"label":"A"}, + {"type":"In","id":"dev5","x":144,"y":80,"label":"B"}, + {"type":"Out","id":"dev6","x":240,"y":32,"label":"S"}, + {"type":"Out","id":"dev7","x":240,"y":80,"label":"C"}, + {"type":"Toggle","id":"dev8","x":96,"y":32,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev2.in0","to":"dev4.out0"}, + {"from":"dev2.in1","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev4.out0"}, + {"from":"dev3.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev8.out0"}, + {"from":"dev5.in0","to":"dev0.out0"}, + {"from":"dev6.in0","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev1.out0"} + ] +} +); + +simcir.registerDevice('FullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('4bitAdder', +{ + "width":280, + "height":480, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"FullAdder","id":"dev0","x":120,"y":72,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev1","x":120,"y":136,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev2","x":120,"y":200,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev3","x":120,"y":264,"label":"FullAdder"}, + {"type":"In","id":"dev4","x":40,"y":80,"label":"A0"}, + {"type":"In","id":"dev5","x":40,"y":128,"label":"A1"}, + {"type":"In","id":"dev6","x":40,"y":176,"label":"A2"}, + {"type":"In","id":"dev7","x":40,"y":224,"label":"A3"}, + {"type":"In","id":"dev8","x":40,"y":272,"label":"B0"}, + {"type":"In","id":"dev9","x":40,"y":320,"label":"B1"}, + {"type":"In","id":"dev10","x":40,"y":368,"label":"B2"}, + {"type":"In","id":"dev11","x":40,"y":416,"label":"B3"}, + {"type":"Out","id":"dev12","x":200,"y":72,"label":"S0"}, + {"type":"Out","id":"dev13","x":200,"y":120,"label":"S1"}, + {"type":"Out","id":"dev14","x":200,"y":168,"label":"S2"}, + {"type":"Out","id":"dev15","x":200,"y":216,"label":"S3"}, + {"type":"Out","id":"dev16","x":200,"y":280,"label":"Cout"}, + {"type":"In","id":"dev17","x":40,"y":24,"label":"Cin"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev17.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev0.in2","to":"dev8.out0"}, + {"from":"dev1.in0","to":"dev0.out1"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev9.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev6.out0"}, + {"from":"dev2.in2","to":"dev10.out0"}, + {"from":"dev3.in0","to":"dev2.out1"}, + {"from":"dev3.in1","to":"dev7.out0"}, + {"from":"dev3.in2","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev3.out0"}, + {"from":"dev16.in0","to":"dev3.out1"} + ] +} +); + +simcir.registerDevice('2to4BinaryDecoder', +{ + "width":400, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"AND","numInputs":3,"id":"dev0","x":280,"y":24,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev1","x":280,"y":72,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev2","x":280,"y":120,"label":"AND"}, + {"type":"NOT","id":"dev3","x":192,"y":48,"label":"NOT"}, + {"type":"AND","numInputs":3,"id":"dev4","x":280,"y":168,"label":"AND"}, + {"type":"NOT","id":"dev5","x":192,"y":96,"label":"NOT"}, + {"type":"In","id":"dev6","x":192,"y":176,"label":"OE"}, + {"type":"In","id":"dev7","x":128,"y":48,"label":"D0"}, + {"type":"In","id":"dev8","x":128,"y":96,"label":"D1"}, + {"type":"Toggle","id":"dev9","x":80,"y":48,"label":"Toggle"}, + {"type":"Toggle","id":"dev10","x":80,"y":96,"label":"Toggle"}, + {"type":"DC","id":"dev11","x":32,"y":96,"label":"DC"}, + {"type":"Out","id":"dev12","x":328,"y":24,"label":"A0"}, + {"type":"Out","id":"dev13","x":328,"y":72,"label":"A1"}, + {"type":"Out","id":"dev14","x":328,"y":120,"label":"A2"}, + {"type":"Out","id":"dev15","x":328,"y":168,"label":"A3"}, + {"type":"Toggle","id":"dev16","x":80,"y":144,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev0.in1","to":"dev5.out0"}, + {"from":"dev0.in2","to":"dev6.out0"}, + {"from":"dev1.in0","to":"dev7.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev6.out0"}, + {"from":"dev2.in0","to":"dev3.out0"}, + {"from":"dev2.in1","to":"dev8.out0"}, + {"from":"dev2.in2","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev7.out0"}, + {"from":"dev4.in1","to":"dev8.out0"}, + {"from":"dev4.in2","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev8.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev7.in0","to":"dev9.out0"}, + {"from":"dev8.in0","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev11.out0"}, + {"from":"dev10.in0","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev4.out0"}, + {"from":"dev16.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('3to8BinaryDecoder', +{ + "width":360, + "height":440, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":24,"y":144,"label":"D0"}, + {"type":"In","id":"dev1","x":24,"y":192,"label":"D1"}, + {"type":"In","id":"dev2","x":24,"y":240,"label":"D2"}, + {"type":"In","id":"dev3","x":24,"y":304,"label":"OE"}, + {"type":"NOT","id":"dev4","x":72,"y":240,"label":"NOT"}, + {"type":"AND","id":"dev5","x":120,"y":248,"label":"AND"}, + {"type":"AND","id":"dev6","x":120,"y":296,"label":"AND"}, + {"type":"2to4BinaryDecoder","id":"dev7","x":184,"y":144,"label":"2to4BinaryDecoder"}, + {"type":"2to4BinaryDecoder","id":"dev8","x":184,"y":224,"label":"2to4BinaryDecoder"}, + {"type":"Out","id":"dev9","x":296,"y":32,"label":"A0"}, + {"type":"Out","id":"dev10","x":296,"y":80,"label":"A1"}, + {"type":"Out","id":"dev11","x":296,"y":128,"label":"A2"}, + {"type":"Out","id":"dev12","x":296,"y":176,"label":"A3"}, + {"type":"Out","id":"dev13","x":296,"y":224,"label":"A4"}, + {"type":"Out","id":"dev14","x":296,"y":272,"label":"A5"}, + {"type":"Out","id":"dev15","x":296,"y":320,"label":"A6"}, + {"type":"Out","id":"dev16","x":296,"y":368,"label":"A7"} + ], + "connectors":[ + {"from":"dev4.in0","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev2.out0"}, + {"from":"dev6.in1","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev0.out0"}, + {"from":"dev7.in1","to":"dev1.out0"}, + {"from":"dev7.in2","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev7.out1"}, + {"from":"dev11.in0","to":"dev7.out2"}, + {"from":"dev12.in0","to":"dev7.out3"}, + {"from":"dev13.in0","to":"dev8.out0"}, + {"from":"dev14.in0","to":"dev8.out1"}, + {"from":"dev15.in0","to":"dev8.out2"}, + {"from":"dev16.in0","to":"dev8.out3"} + ] +} +); + +simcir.registerDevice('4to16BinaryDecoder', +{ + "width":440, + "height":360, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":32,"y":56,"label":"D0"}, + {"type":"In","id":"dev1","x":32,"y":104,"label":"D1"}, + {"type":"In","id":"dev2","x":32,"y":152,"label":"D2"}, + {"type":"In","id":"dev3","x":32,"y":200,"label":"D3"}, + {"type":"In","id":"dev4","x":32,"y":264,"label":"OE"}, + {"type":"NOT","id":"dev5","x":80,"y":200,"label":"NOT"}, + {"type":"AND","id":"dev6","x":136,"y":208,"label":"AND"}, + {"type":"AND","id":"dev7","x":136,"y":256,"label":"AND"}, + {"type":"3to8BinaryDecoder","id":"dev8","x":208,"y":32,"label":"3to8BinaryDecoder"}, + {"type":"3to8BinaryDecoder","id":"dev9","x":208,"y":184,"label":"3to8BinaryDecoder"}, + {"type":"BusOut","id":"dev10","x":320,"y":88,"label":"BusOut"}, + {"type":"BusOut","id":"dev11","x":320,"y":184,"label":"BusOut"}, + {"type":"Out","id":"dev12","x":376,"y":128,"label":"A0"}, + {"type":"Out","id":"dev13","x":376,"y":184,"label":"A1"} + ], + "connectors":[ + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev6.in1","to":"dev4.out0"}, + {"from":"dev7.in0","to":"dev3.out0"}, + {"from":"dev7.in1","to":"dev4.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev2.out0"}, + {"from":"dev8.in3","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev0.out0"}, + {"from":"dev9.in1","to":"dev1.out0"}, + {"from":"dev9.in2","to":"dev2.out0"}, + {"from":"dev9.in3","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev8.out0"}, + {"from":"dev10.in1","to":"dev8.out1"}, + {"from":"dev10.in2","to":"dev8.out2"}, + {"from":"dev10.in3","to":"dev8.out3"}, + {"from":"dev10.in4","to":"dev8.out4"}, + {"from":"dev10.in5","to":"dev8.out5"}, + {"from":"dev10.in6","to":"dev8.out6"}, + {"from":"dev10.in7","to":"dev8.out7"}, + {"from":"dev11.in0","to":"dev9.out0"}, + {"from":"dev11.in1","to":"dev9.out1"}, + {"from":"dev11.in2","to":"dev9.out2"}, + {"from":"dev11.in3","to":"dev9.out3"}, + {"from":"dev11.in4","to":"dev9.out4"}, + {"from":"dev11.in5","to":"dev9.out5"}, + {"from":"dev11.in6","to":"dev9.out6"}, + {"from":"dev11.in7","to":"dev9.out7"}, + {"from":"dev12.in0","to":"dev10.out0"}, + {"from":"dev13.in0","to":"dev11.out0"} + ] +} +); diff --git a/project1/Libraries/simcirjs/simcir.css b/project1/Libraries/simcirjs/simcir.css new file mode 100644 index 00000000..06c4aa04 --- /dev/null +++ b/project1/Libraries/simcirjs/simcir.css @@ -0,0 +1,218 @@ +/* + * SimcirJS + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-body { + display: inline-block; +} + +.simcir-workspace { + cursor: default; + overflow: hidden; + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +.simcir-pin-hole { + fill: #cccccc; + stroke: none; +} + +.simcir-toolbox { + fill: #eeeeee; +} + +.simcir-scrollbar { + fill: #cccccc; +} + +.simcir-scrollbar-bar { + fill: #aaaaaa; +} + +.simcir-scrollbar-bar:hover { + fill: #999999; +} + +.simcir-connector { + stroke-width: 1; + stroke: #0000ff; + stroke-linecap: round; +} + +.simcir-connector-hot { + /* stroke: #ff0000; */ +} + +.simcir-joint-point { + stroke-width: 3; +} + +.simcir-device { + fill: #cccccc; + stroke-width: 2; + stroke: #666666; +} + +.simcir-device-selected { + stroke: #0000ff; +} + +.simcir-device-label { + fill: #000000; + stroke-width: 0; + stroke: none; +} + +.simcir-selection-rect { + fill: none; + stroke-width: 1; + stroke: #0000ff; +} + +.simcir-node-type-in { + fill: #ffcc00; +} + +.simcir-node-type-out { + fill: #ffffff; +} + +.simcir-node { + stroke-width: 1; + stroke: #000000; +} + +.simcir-node-hot { + stroke: #ff0000; +} + +.simcir-node-hover { + stroke: #ffff00; +} + +.simcir-node-label { + fill: #000000; + stroke: none; +} + +.simcir-port { + stroke-width: 1; + stroke: #000000; +} + +.simcir-port-hole { + stroke: none; + fill: #000000; +} + +.simcir-json-data-area { + padding: 0px; + outline: none; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.simcir-dialog { + padding: 4px; + border-width: 2px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; + -webkit-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); +} + +.simcir-dialog-title { + margin-right: 4px; +} + +.simcir-dialog-close-button { + fill: #666666; + stroke: none; +} + +.simcir-dialog-close-button:hover { + fill: #888888; + stroke: none; +} + +.simcir-dialog-close-button-symbol { + fill: none; + stroke: #ffffff; + stroke-width: 2; +} + +.simcir-label-editor { + width: 100px; + border-width: 1px; + border-style: solid; + border-color: #cccccc; + background-color: #f0f0f0; + outline: none; +} + +.simcir-label-editor::-ms-clear { + display: none; + width: 0; + height: 0; +} + +/* simcir doc */ + +TABLE.simcir-doc-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-table, +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + padding: 16px; +} + +TABLE.simcir-doc-params-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-params-table, +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + padding: 2px; +} + +.simcir-doc-title { + font-weight: bold; + margin: 16px 0px 0px 0px; +} + +.simcir-doc-code { + padding: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #f0f0f0; +} diff --git a/project1/Libraries/simcirjs/simcir.js b/project1/Libraries/simcirjs/simcir.js new file mode 100644 index 00000000..d639227a --- /dev/null +++ b/project1/Libraries/simcirjs/simcir.js @@ -0,0 +1,2516 @@ +// +// SimcirJS +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// In +// Out +// Joint + +'use strict'; + +var simcir = {}; + +// +// https://github.com/kazuhikoarase/lessQuery +// +simcir.$ = function() { + + var debug = location.hash == '#debug'; + + var cacheIdKey = '.lessqCacheId'; + var cacheIdSeq = 0; + var cache = {}; + + var getCache = function(elm) { + var cacheId = elm[cacheIdKey]; + if (typeof cacheId == 'undefined') { + elm[cacheIdKey] = cacheId = cacheIdSeq++; + cache[cacheId] = debug? { e : elm } : {}; + } + return cache[cacheId]; + }; + + var hasCache = function(elm) { + return typeof elm[cacheIdKey] != 'undefined'; + }; + + if (debug) { + var lastKeys = {}; + var showCacheCount = function() { + var cnt = 0; + var keys = {}; + for (var k in cache) { + cnt += 1; + if (!lastKeys[k]) { + console.log(cache[k]); + } + keys[k] = true; + } + lastKeys = keys; + console.log('cacheCount:' + cnt); + window.setTimeout(showCacheCount, 5000); + }; + showCacheCount(); + } + + var removeCache = function(elm) { + + if (typeof elm[cacheIdKey] != 'undefined') { + + // remove all listeners + var cacheId = elm[cacheIdKey]; + var listenerMap = cache[cacheId].listenerMap; + for (var type in listenerMap) { + var listeners = listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + elm.removeEventListener(type, listeners[i]); + } + } + + // delete refs + delete elm[cacheIdKey]; + delete cache[cacheId]; + } + + while (elm.firstChild) { + removeCache(elm.firstChild); + elm.removeChild(elm.firstChild); + } + }; + + var getData = function(elm) { + if (!getCache(elm).data) { getCache(elm).data = {}; } + return getCache(elm).data; + }; + + var getListeners = function(elm, type) { + if (!getCache(elm).listenerMap) { + getCache(elm).listenerMap = {}; } + if (!getCache(elm).listenerMap[type]) { + getCache(elm).listenerMap[type] = []; } + return getCache(elm).listenerMap[type]; + }; + + // add / remove event listener. + var addEventListener = function(elm, type, listener, add) { + var listeners = getListeners(elm, type); + var newListeners = []; + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] != listener) { + newListeners.push(listeners[i]); + } + } + if (add) { newListeners.push(listener); } + getCache(elm).listenerMap[type] = newListeners; + return true; + }; + + var CustomEvent = { + preventDefault : function() { this._pD = true; }, + stopPropagation : function() { this._sP = true; }, + stopImmediatePropagation : function() { this._sIp = true; } + }; + + var trigger = function(elm, type, data) { + var event = { type : type, target : elm, currentTarget : null, + _pD : false, _sP : false, _sIp : false, __proto__ : CustomEvent }; + for (var e = elm; e != null; e = e.parentNode) { + if (!hasCache(e) ) { continue; } + if (!getCache(e).listenerMap) { continue; } + if (!getCache(e).listenerMap[type]) { continue; } + event.currentTarget = e; + var listeners = getCache(e).listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + listeners[i].call(e, event, data); + if (event._sIp) { return; } + } + if (event._sP) { return; } + } + }; + + var data = function(elm, kv) { + if (arguments.length == 2) { + if (typeof kv == 'string') return getData(elm)[kv]; + for (var k in kv) { getData(elm)[k] = kv[k]; } + } else if (arguments.length == 3) { + getData(elm)[kv] = arguments[2]; + } + return elm; + }; + + var extend = function(o1, o2) { + for (var k in o2) { o1[k] = o2[k]; } return o1; + }; + + var each = function(it, callback) { + if (typeof it.splice == 'function') { + for (var i = 0; i < it.length; i += 1) { callback(i, it[i]); } + } else { + for (var k in it) { callback(k, it[k]); } + } + }; + + var grep = function(list, accept) { + var newList = []; + for (var i = 0; i < list.length; i += 1) { + var item = list[i]; + if (accept(item) ) { + newList.push(item); + } + } + return newList; + }; + + var addClass = function(elm, className, add) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + var newClasses = ''; + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { continue; } + newClasses += ' ' + classes[i]; + } + if (add) { newClasses += ' ' + className; } + elm.setAttribute('class', newClasses); + }; + + var hasClass = function(elm, className) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { return true; } + } + return false; + }; + + var matches = function(elm, selector) { + if (elm.nodeType != 1) { + return false; + } else if (!selector) { + return true; + } + var sels = selector.split(/[,\s]+/g); + for (var i = 0; i < sels.length; i += 1) { + var sel = sels[i]; + if (sel.substring(0, 1) == '#') { + throw 'not supported:' + sel; + } else if (sel.substring(0, 1) == '.') { + if (hasClass(elm, sel.substring(1) ) ) { + return true; + } + } else { + if (elm.tagName.toUpperCase() == sel.toUpperCase() ) { + return true; + } + } + } + return false; + }; + + var parser = new window.DOMParser(); + + var html = function(html) { + var doc = parser.parseFromString( + '
    ' + html + '
    ', + 'text/xml').firstChild; + var elms = []; + while (doc.firstChild) { + elms.push(doc.firstChild); + doc.removeChild(doc.firstChild); + } + elms.__proto__ = fn; + return elms; + }; + + var pxToNum = function(px) { + if (typeof px != 'string' || px.length <= 2 || + px.charAt(px.length - 2) != 'p' || + px.charAt(px.length - 1) != 'x') { + throw 'illegal px:' + px; + } + return +px.substring(0, px.length - 2); + }; + + var buildQuery = function(data) { + var query = ''; + for (var k in data) { + if (query.length > 0) { + query += '&'; + } + query += window.encodeURIComponent(k); + query += '='; + query += window.encodeURIComponent(data[k]); + } + return query; + }; + + var parseResponse = function() { + + var contentType = this.getResponseHeader('content-type'); + if (contentType != null) { + contentType = contentType.replace(/\s*;.+$/, '').toLowerCase(); + } + + if (contentType == 'text/xml' || + contentType == 'application/xml') { + return parser.parseFromString(this.responseText, 'text/xml'); + } else if (contentType == 'text/json' || + contentType == 'application/json') { + return JSON.parse(this.responseText); + } else { + return this.response; + } + }; + + var ajax = function(params) { + + params = extend({ + url: '', + method : 'GET', + contentType : 'application/x-www-form-urlencoded;charset=UTF-8', + cache: true, + processData: true, + async : true + }, params); + + if (!params.async) { + // force async. + throw 'not supported.'; + } + + var method = params.method.toUpperCase(); + var data = null; + var contentType = params.contentType; + if (method == 'POST' || method == 'PUT') { + data = (typeof params.data == 'object' && params.processData)? + buildQuery(params.data) : params.data; + } else { + contentType = false; + } + + var xhr = params.xhr? params.xhr() : new window.XMLHttpRequest(); + xhr.open(method, params.url, params.async); + if (contentType !== false) { + xhr.setRequestHeader('Content-Type', contentType); + } + xhr.onreadystatechange = function() { + if(xhr.readyState == window.XMLHttpRequest.DONE) { + try { + if (xhr.status == 200) { + done.call(xhr, parseResponse.call(this) ); + } else { + fail.call(xhr); + } + } finally { + always.call(xhr); + } + } + }; + + // call later + window.setTimeout(function() { xhr.send(data); }, 0); + + // callbacks + var done = function(data) {}; + var fail = function() {}; + var always = function() {}; + + var $ = { + done : function(callback) { done = callback; return $; }, + fail : function(callback) { fail = callback; return $; }, + always : function(callback) { always = callback; return $; }, + abort : function() { xhr.abort(); return $; } + }; + return $; + }; + + // 1. for single element + var fn = { + attr : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.getAttribute(kv); + for (var k in kv) { this.setAttribute(k, kv[k]); } + } else if (arguments.length == 2) { + this.setAttribute(kv, arguments[1]); + } + return this; + }, + prop : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this[kv]; + for (var k in kv) { this[k] = kv[k]; } + } else if (arguments.length == 2) { + this[kv] = arguments[1]; + } + return this; + }, + css : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.style[kv]; + for (var k in kv) { this.style[k] = kv[k]; } + } else if (arguments.length == 2) { + this.style[kv] = arguments[1]; + } + return this; + }, + data : function(kv) { + var args = [ this ]; + for (var i = 0; i < arguments.length; i += 1) { + args.push(arguments[i]); + }; + return data.apply(null, args); + }, + val : function() { + if (arguments.length == 0) { + return this.value || ''; + } else if (arguments.length == 1) { + this.value = arguments[0]; + } + return this; + }, + on : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.addEventListener(types[i], listener); + addEventListener(this, types[i], listener, true); + } + return this; + }, + off : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.removeEventListener(types[i], listener); + addEventListener(this, types[i], listener, false); + } + return this; + }, + trigger : function(type, data) { + trigger(this, type, data); + return this; + }, + offset : function() { + var off = { left : 0, top : 0 }; + var base = null; + for (var e = this; e.parentNode != null; e = e.parentNode) { + if (e.offsetParent != null) { + base = e; + break; + } + } + if (base != null) { + for (var e = base; e.offsetParent != null; e = e.offsetParent) { + off.left += e.offsetLeft; + off.top += e.offsetTop; + } + } + for (var e = this; e.parentNode != null && + e != document.body; e = e.parentNode) { + off.left -= e.scrollLeft; + off.top -= e.scrollTop; + } + return off; + }, + append : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + this.appendChild(elms[i]); + } + return this; + }, + prepend : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + if (this.firstChild) { + this.insertBefore(elms[i], this.firstChild); + } else { + this.appendChild(elms[i]); + } + } + return this; + }, + insertBefore : function(elms) { + var elm = elms[0]; + elm.parentNode.insertBefore(this, elm); + return this; + }, + insertAfter : function(elms) { + var elm = elms[0]; + if (elm.nextSibling) { + elm.parentNode.insertBefore(this, elm.nextSibling); + } else { + elm.parentNode.appendChild(this); + } + return this; + }, + remove : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + removeCache(this); + return this; + }, + detach : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + return this; + }, + parent : function() { + return $(this.parentNode); + }, + closest : function(selector) { + for (var e = this; e != null; e = e.parentNode) { + if (matches(e, selector) ) { + return $(e); + } + } + return $(); + }, + find : function(selector) { + var elms = []; + var childNodes = this.querySelectorAll(selector); + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + }, + children : function(selector) { + var elms = []; + var childNodes = this.childNodes; + for (var i = 0; i < childNodes.length; i += 1) { + if (matches(childNodes.item(i), selector) ) { + elms.push(childNodes.item(i) ); + } + } + elms.__proto__ = fn; + return elms; + }, + index : function(selector) { + return Array.prototype.indexOf.call( + $(this).parent().children(selector), this); + }, + clone : function() { return $(this.cloneNode(true) ); }, + focus : function() { this.focus(); return this; }, + select : function() { this.select(); return this; }, + submit : function() { this.submit(); return this; }, + scrollLeft : function() { + if (arguments.length == 0) return this.scrollLeft; + this.scrollLeft = arguments[0]; return this; + }, + scrollTop : function() { + if (arguments.length == 0) return this.scrollTop; + this.scrollTop = arguments[0]; return this; + }, + html : function() { + if (arguments.length == 0) return this.innerHTML; + this.innerHTML = arguments[0]; return this; + }, + text : function() { + if (typeof this.textContent != 'undefined') { + if (arguments.length == 0) return this.textContent; + this.textContent = arguments[0]; return this; + } else { + if (arguments.length == 0) return this.innerText; + this.innerText = arguments[0]; return this; + } + }, + outerWidth : function(margin) { + var w = this.offsetWidth; + if (margin) { + var cs = window.getComputedStyle(this, null); + return w + pxToNum(cs.marginLeft) + pxToNum(cs.marginRight); + } + return w; + }, + innerWidth : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth); + }, + width : function() { + if (this == window) return this.innerWidth; + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth) - + pxToNum(cs.paddingLeft) - pxToNum(cs.paddingRight); + }, + outerHeight : function(margin) { + var h = this.offsetHeight; + if (margin) { + var cs = window.getComputedStyle(this, null); + return h + pxToNum(cs.marginTop) + pxToNum(cs.marginBottom); + } + return h; + }, + innerHeight : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth); + }, + height : function() { + if (this == window) return this.innerHeight; + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth) - + pxToNum(cs.paddingTop) - pxToNum(cs.paddingBottom); + }, + addClass : function(className) { + addClass(this, className, true); return this; + }, + removeClass : function(className) { + addClass(this, className, false); return this; + }, + hasClass : function(className) { + return hasClass(this, className); + } + }; + + // 2. to array + each(fn, function(name, func) { + fn[name] = function() { + var newRet = null; + for (var i = 0; i < this.length; i += 1) { + var elm = this[i]; + var ret = func.apply(elm, arguments); + if (elm !== ret) { + if (ret != null && ret.__proto__ == fn) { + if (newRet == null) { newRet = []; } + newRet = newRet.concat(ret); + } else { + return ret; + } + } + } + if (newRet != null) { + newRet.__proto__ = fn; + return newRet; + } + return this; + }; + }); + + // 3. for array + fn = extend(fn, { + each : function(callback) { + for (var i = 0; i < this.length; i += 1) { + callback.call(this[i], i); + } + return this; + }, + first : function() { + return $(this.length > 0? this[0] : null); + }, + last : function() { + return $(this.length > 0? this[this.length - 1] : null); + } + }); + + var $ = function(target) { + + if (typeof target == 'function') { + + // ready + return $(document).on('DOMContentLoaded', target); + + } else if (typeof target == 'string') { + + if (target.charAt(0) == '<') { + + // dom creation + return html(target); + + } else { + + // query + var childNodes = document.querySelectorAll(target); + var elms = []; + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + } + + } else if (typeof target == 'object' && target != null) { + + if (target.__proto__ == fn) { + return target; + } else { + var elms = []; + elms.push(target); + elms.__proto__ = fn; + return elms; + } + + } else { + + var elms = []; + elms.__proto__ = fn; + return elms; + } + }; + + return extend($, { + fn : fn, extend : extend, each : each, grep : grep, + data : data, ajax : ajax }); +}(); + +!function($s) { + + var $ = $s.$; + + var createSVGElement = function(tagName) { + return $(document.createElementNS( + 'http://www.w3.org/2000/svg', tagName) ); + }; + + var createSVG = function(w, h) { + return createSVGElement('svg').attr({ + version: '1.1', + width: w, height: h, + viewBox: '0 0 ' + w + ' ' + h + }); + }; + + var graphics = function($target) { + var attr = {}; + var buf = ''; + var moveTo = function(x, y) { + buf += ' M ' + x + ' ' + y; + }; + var lineTo = function(x, y) { + buf += ' L ' + x + ' ' + y; + }; + var curveTo = function(x1, y1, x, y) { + buf += ' Q ' + x1 + ' ' + y1 + ' ' + x + ' ' + y; + }; + var closePath = function(close) { + if (close) { + // really close path. + buf += ' Z'; + } + $target.append(createSVGElement('path'). + attr('d', buf).attr(attr) ); + buf = ''; + }; + var drawRect = function(x, y, width, height) { + $target.append(createSVGElement('rect'). + attr({x: x, y: y, width: width, height: height}).attr(attr) ); + }; + var drawCircle = function(x, y, r) { + $target.append(createSVGElement('circle'). + attr({cx: x, cy: y, r: r}).attr(attr) ); + }; + return { + attr: attr, + moveTo: moveTo, + lineTo: lineTo, + curveTo: curveTo, + closePath: closePath, + drawRect: drawRect, + drawCircle: drawCircle + }; + }; + + var transform = function() { + var attrX = 'simcir-transform-x'; + var attrY = 'simcir-transform-y'; + var attrRotate = 'simcir-transform-rotate'; + var num = function($o, k) { + var v = $o.attr(k); + return v? +v : 0; + }; + return function($o, x, y, rotate) { + if (arguments.length >= 3) { + var transform = 'translate(' + x + ' ' + y + ')'; + if (rotate) { + transform += ' rotate(' + rotate + ')'; + } + $o.attr('transform', transform); + $o.attr(attrX, x); + $o.attr(attrY, y); + $o.attr(attrRotate, rotate); + } else if (arguments.length == 1) { + return {x: num($o, attrX), y: num($o, attrY), + rotate: num($o, attrRotate)}; + } + }; + }(); + + var offset = function($o) { + var x = 0; + var y = 0; + while ($o[0].nodeName != 'svg') { + var pos = transform($o); + x += pos.x; + y += pos.y; + $o = $o.parent(); + } + return {x: x, y: y}; + }; + + var enableEvents = function($o, enable) { + $o.css('pointer-events', enable? 'visiblePainted' : 'none'); + }; + + var disableSelection = function($o) { + $o.each(function() { + this.onselectstart = function() { return false; }; + }).css('-webkit-user-select', 'none'); + }; + + var controller = function() { + var id = 'controller'; + return function($ui, controller) { + if (arguments.length == 1) { + return $.data($ui[0], id); + } else if (arguments.length == 2) { + $.data($ui[0], id, controller); + } + }; + }(); + + var eventQueue = function() { + var delay = 50; // ms + var limit = 40; // ms + var _queue = null; + var postEvent = function(event) { + if (_queue == null) { + _queue = []; + } + _queue.push(event); + }; + var dispatchEvent = function() { + var queue = _queue; + _queue = null; + while (queue.length > 0) { + var e = queue.shift(); + e.target.trigger(e.type); + } + }; + var getTime = function() { + return new Date().getTime(); + }; + var timerHandler = function() { + var start = getTime(); + while (_queue != null && getTime() - start < limit) { + dispatchEvent(); + } + window.setTimeout(timerHandler, + Math.max(delay - limit, delay - (getTime() - start) ) ); + }; + timerHandler(); + return { + postEvent: postEvent + }; + }(); + + var unit = 16; + var fontSize = 12; + + var createLabel = function(text) { + return createSVGElement('text'). + text(text). + css('font-size', fontSize + 'px'); + }; + + var createNode = function(type, label, description, headless) { + var $node = createSVGElement('g'). + attr('simcir-node-type', type); + if (!headless) { + $node.attr('class', 'simcir-node'); + } + var node = createNodeController({ + $ui: $node, type: type, label: label, + description: description, headless: headless}); + if (type == 'in') { + controller($node, createInputNodeController(node) ); + } else if (type == 'out') { + controller($node, createOutputNodeController(node) ); + } else { + throw 'unknown type:' + type; + } + return $node; + }; + + var isActiveNode = function($o) { + return $o.closest('.simcir-node').length == 1 && + $o.closest('.simcir-toolbox').length == 0; + }; + + var createNodeController = function(node) { + var _value = null; + var setValue = function(value, force) { + if (_value === value && !force) { + return; + } + _value = value; + eventQueue.postEvent({target: node.$ui, type: 'nodeValueChange'}); + }; + var getValue = function() { + return _value; + }; + + if (!node.headless) { + + node.$ui.attr('class', 'simcir-node simcir-node-type-' + node.type); + + var $circle = createSVGElement('circle'). + attr({cx: 0, cy: 0, r: 4}); + node.$ui.on('mouseover', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.addClass('simcir-node-hover'); + } + }); + node.$ui.on('mouseout', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.removeClass('simcir-node-hover'); + } + }); + node.$ui.append($circle); + var appendLabel = function(text, align) { + var $label = createLabel(text). + attr('class', 'simcir-node-label'); + enableEvents($label, false); + if (align == 'right') { + $label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + $label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } + node.$ui.append($label); + }; + if (node.label) { + if (node.type == 'in') { + appendLabel(node.label, 'right'); + } else if (node.type == 'out') { + appendLabel(node.label, 'left'); + } + } + if (node.description) { + if (node.type == 'in') { + appendLabel(node.description, 'left'); + } else if (node.type == 'out') { + appendLabel(node.description, 'right'); + } + } + node.$ui.on('nodeValueChange', function(event) { + if (_value != null) { + node.$ui.addClass('simcir-node-hot'); + } else { + node.$ui.removeClass('simcir-node-hot'); + } + }); + } + + return $.extend(node, { + setValue: setValue, + getValue: getValue + }); + }; + + var createInputNodeController = function(node) { + var output = null; + var setOutput = function(outNode) { + output = outNode; + }; + var getOutput = function() { + return output; + }; + return $.extend(node, { + setOutput: setOutput, + getOutput: getOutput + }); + }; + + var createOutputNodeController = function(node) { + var inputs = []; + var super_setValue = node.setValue; + var setValue = function(value) { + super_setValue(value); + for (var i = 0; i < inputs.length; i += 1) { + inputs[i].setValue(value); + } + }; + var connectTo = function(inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + inNode.setOutput(node); + inputs.push(inNode); + inNode.setValue(node.getValue(), true); + }; + var disconnectFrom = function(inNode) { + if (inNode.getOutput() != node) { + throw 'not connected.'; + } + inNode.setOutput(null); + inNode.setValue(null, true); + inputs = $.grep(inputs, function(v) { + return v != inNode; + }); + }; + var getInputs = function() { + return inputs; + }; + return $.extend(node, { + setValue: setValue, + getInputs: getInputs, + connectTo: connectTo, + disconnectFrom: disconnectFrom + }); + }; + + var createDevice = function(deviceDef, headless, scope) { + headless = headless || false; + scope = scope || null; + var $dev = createSVGElement('g'); + if (!headless) { + $dev.attr('class', 'simcir-device'); + } + controller($dev, createDeviceController( + {$ui: $dev, deviceDef: deviceDef, + headless: headless, scope: scope, doc: null}) ); + var factory = factories[deviceDef.type]; + if (factory) { + factory(controller($dev) ); + } + if (!headless) { + controller($dev).createUI(); + } + return $dev; + }; + + var createDeviceController = function(device) { + var inputs = []; + var outputs = []; + var addInput = function(label, description) { + var $node = createNode('in', label, description, device.headless); + $node.on('nodeValueChange', function(event) { + device.$ui.trigger('inputValueChange'); + }); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + inputs.push(node); + return node; + }; + var addOutput = function(label, description) { + var $node = createNode('out', label, description, device.headless); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + outputs.push(node); + return node; + }; + var getInputs = function() { + return inputs; + }; + var getOutputs = function() { + return outputs; + }; + var disconnectAll = function() { + $.each(getInputs(), function(i, inNode) { + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + }); + $.each(getOutputs(), function(i, outNode) { + $.each(outNode.getInputs(), function(i, inNode) { + outNode.disconnectFrom(inNode); + }); + }); + }; + device.$ui.on('dispose', function() { + $.each(getInputs(), function(i, inNode) { + inNode.$ui.remove(); + }); + $.each(getOutputs(), function(i, outNode) { + outNode.$ui.remove(); + }); + device.$ui.remove(); + } ); + + var selected = false; + var setSelected = function(value) { + selected = value; + device.$ui.trigger('deviceSelect'); + }; + var isSelected = function() { + return selected; + }; + + var label = device.deviceDef.label; + var defaultLabel = device.deviceDef.type; + if (typeof label == 'undefined') { + label = defaultLabel; + } + var setLabel = function(value) { + value = value.replace(/^\s+|\s+$/g, ''); + label = value || defaultLabel; + device.$ui.trigger('deviceLabelChange'); + }; + var getLabel = function() { + return label; + }; + + var getSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var layoutUI = function() { + + var size = device.getSize(); + var w = size.width; + var h = size.height; + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: 0, width: w, height: h}); + + var pitch = device.halfPitch? unit / 2 : unit; + var layoutNodes = function(nodes, x) { + var offset = (h - pitch * (nodes.length - 1) ) / 2; + $.each(nodes, function(i, node) { + transform(node.$ui, x, pitch * i + offset); + }); + }; + layoutNodes(getInputs(), 0); + layoutNodes(getOutputs(), w); + + device.$ui.children('.simcir-device-label'). + attr({x: w / 2, y: h + fontSize}); + }; + + var createUI = function() { + + device.$ui.attr('class', 'simcir-device'); + device.$ui.on('deviceSelect', function() { + if (selected) { + $(this).addClass('simcir-device-selected'); + } else { + $(this).removeClass('simcir-device-selected'); + } + }); + + var $body = createSVGElement('rect'). + attr('class', 'simcir-device-body'). + attr('rx', 2).attr('ry', 2); + device.$ui.prepend($body); + + var $label = createLabel(label). + attr('class', 'simcir-device-label'). + attr('text-anchor', 'middle'); + device.$ui.on('deviceLabelChange', function() { + $label.text(getLabel() ); + }); + + var label_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var $workspace = $(event.target).closest('.simcir-workspace'); + if (!controller($workspace).data().editable) { + return; + } + var title = 'Enter device name '; + var $labelEditor = $(''). + addClass('simcir-label-editor'). + val($label.text() ). + on('keydown', function(event) { + if (event.keyCode == 13) { + // ENTER + setLabel($(this).val() ); + $dlg.remove(); + } else if (event.keyCode == 27) { + // ESC + $dlg.remove(); + } + } ); + var $placeHolder = $('
    '). + append($labelEditor); + var $dlg = showDialog(title, $placeHolder); + $labelEditor.focus(); + }; + device.$ui.on('deviceAdd', function() { + $label.on('dblclick', label_dblClickHandler); + } ); + device.$ui.on('deviceRemove', function() { + $label.off('dblclick', label_dblClickHandler); + } ); + device.$ui.append($label); + + layoutUI(); + + }; + + var getState = function() { return null; }; + + return $.extend(device, { + addInput: addInput, + addOutput: addOutput, + getInputs: getInputs, + getOutputs: getOutputs, + disconnectAll: disconnectAll, + setSelected: setSelected, + isSelected: isSelected, + getLabel: getLabel, + halfPitch: false, + getSize: getSize, + createUI: createUI, + layoutUI: layoutUI, + getState: getState + }); + }; + + var createConnector = function(x1, y1, x2, y2) { + return createSVGElement('path'). + attr('d', 'M ' + x1 + ' ' + y1 + ' L ' + x2 + ' ' + y2). + attr('class', 'simcir-connector'); + }; + + var connect = function($node1, $node2) { + var type1 = $node1.attr('simcir-node-type'); + var type2 = $node2.attr('simcir-node-type'); + if (type1 == 'in' && type2 == 'out') { + controller($node2).connectTo(controller($node1) ); + } else if (type1 == 'out' && type2 == 'in') { + controller($node1).connectTo(controller($node2) ); + } + }; + + var buildCircuit = function(data, headless, scope) { + var $devices = []; + var $devMap = {}; + var getNode = function(path) { + if (!path.match(/^(\w+)\.(in|out)([0-9]+)$/g) ) { + throw 'unknown path:' + path; + } + var devId = RegExp.$1; + var type = RegExp.$2; + var index = +RegExp.$3; + return (type == 'in')? + controller($devMap[devId]).getInputs()[index] : + controller($devMap[devId]).getOutputs()[index]; + }; + $.each(data.devices, function(i, deviceDef) { + var $dev = createDevice(deviceDef, headless, scope); + transform($dev, deviceDef.x, deviceDef.y); + $devices.push($dev); + $devMap[deviceDef.id] = $dev; + }); + $.each(data.connectors, function(i, conn) { + var nodeFrom = getNode(conn.from); + var nodeTo = getNode(conn.to); + if (nodeFrom && nodeTo) { + connect(nodeFrom.$ui, nodeTo.$ui); + } + }); + return $devices; + }; + + var dialogManager = function() { + var dialogs = []; + var updateDialogs = function($dlg, remove) { + var newDialogs = []; + $.each(dialogs, function(i) { + if (dialogs[i] != $dlg) { + newDialogs.push(dialogs[i]); + } + }); + if (!remove) { + newDialogs.push($dlg); + } + // renumber z-index + $.each(newDialogs, function(i) { + newDialogs[i].css('z-index', '' + (i + 1) ); + }); + dialogs = newDialogs; + }; + return { + add : function($dlg) { + updateDialogs($dlg); + }, + remove : function($dlg) { + updateDialogs($dlg, true); + }, + toFront : function($dlg) { + updateDialogs($dlg); + } + }; + }(); + + var showDialog = function(title, $content) { + var $closeButton = function() { + var r = 16; + var pad = 4; + var $btn = createSVG(r, r). + attr('class', 'simcir-dialog-close-button'); + var g = graphics($btn); + g.drawRect(0, 0, r, r); + g.attr['class'] = 'simcir-dialog-close-button-symbol'; + g.moveTo(pad, pad); + g.lineTo(r - pad, r - pad); + g.closePath(); + g.moveTo(r - pad, pad); + g.lineTo(pad, r - pad); + g.closePath(); + return $btn; + }(); + var $title = $('
    '). + addClass('simcir-dialog-title'). + text(title). + css('cursor', 'default'). + on('mousedown', function(event) { + event.preventDefault(); + }); + var $dlg = $('
    '). + addClass('simcir-dialog'). + css({position:'absolute'}). + append($title.css('float', 'left') ). + append($closeButton.css('float', 'right') ). + append($('
    ').css('clear', 'both') ). + append($content); + $('BODY').append($dlg); + dialogManager.add($dlg); + var dragPoint = null; + var dlg_mouseDownHandler = function(event) { + if (!$(event.target).hasClass('simcir-dialog') && + !$(event.target).hasClass('simcir-dialog-title') ) { + return; + } + event.preventDefault(); + dialogManager.toFront($dlg); + var off = $dlg.offset(); + dragPoint = { + x: event.pageX - off.left, + y: event.pageY - off.top}; + $(document).on('mousemove', dlg_mouseMoveHandler); + $(document).on('mouseup', dlg_mouseUpHandler); + }; + var dlg_mouseMoveHandler = function(event) { + moveTo( + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + var dlg_mouseUpHandler = function(event) { + $(document).off('mousemove', dlg_mouseMoveHandler); + $(document).off('mouseup', dlg_mouseUpHandler); + }; + $dlg.on('mousedown', dlg_mouseDownHandler); + $closeButton.on('mousedown', function() { + $dlg.trigger('close'); + $dlg.remove(); + dialogManager.remove($dlg); + }); + var w = $dlg.width(); + var h = $dlg.height(); + var cw = $(window).width(); + var ch = $(window).height(); + var getProp = function(id) { + return $('HTML')[id]() || $('BODY')[id](); + }; + var x = (cw - w) / 2 + getProp('scrollLeft'); + var y = (ch - h) / 2 + getProp('scrollTop'); + var moveTo = function(x, y) { + $dlg.css({left: x + 'px', top: y + 'px'}); + }; + moveTo(x, y); + return $dlg; + }; + + var createDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + $ports.sort(function($p1, $p2) { + var x1 = controller($p1).deviceDef.x; + var y1 = controller($p1).deviceDef.y; + var x2 = controller($p2).deviceDef.x; + var y2 = controller($p2).deviceDef.y; + if (x1 == x2) { + return (y1 < y2)? -1 : 1; + } + return (x1 < x2)? -1 : 1; + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(portDef.label, + getDesc(outPort.getInputs()[0]) ); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(portDef.label, + getDesc(inPort.getOutput() ) ); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + }; + }; + + var createCustomLayoutDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + var intfs = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(); + intfs.push({ node : inPort, label : portDef.label, + desc : getDesc(outPort.getInputs()[0]) }); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(); + intfs.push({ node : outPort, label : portDef.label, + desc : getDesc(inPort.getOutput() ) }); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var layout = data.layout; + var cols = layout.cols; + var rows = layout.rows; + rows = ~~( (Math.max(1, rows) + 1) / 2) * 2; + cols = ~~( (Math.max(1, cols) + 1) / 2) * 2; + var updateIntf = function(intf, x, y, align) { + transform(intf.node.$ui, x, y); + if (!intf.$label) { + intf.$label = createLabel(intf.label). + attr('class', 'simcir-node-label'); + enableEvents(intf.$label, false); + intf.node.$ui.append(intf.$label); + } + if (align == 'right') { + intf.$label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + intf.$label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } else if (align == 'top') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', -6); + } else if (align == 'bottom') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', fontSize + 6); + } + }; + var doLayout = function() { + var x = 0; + var y = 0; + var w = unit * cols / 2; + var h = unit * rows / 2; + device.$ui.children('.simcir-device-label'). + attr({y : y + h + fontSize}); + device.$ui.children('.simcir-device-body'). + attr({x: x, y: y, width: w, height: h}); + $.each(intfs, function(i, intf) { + if (layout.nodes[intf.label] && + layout.nodes[intf.label].match(/^([TBLR])([0-9]+)$/) ) { + var off = +RegExp.$2 * unit / 2; + switch(RegExp.$1) { + case 'T' : updateIntf(intf, x + off, y, 'bottom'); break; + case 'B' : updateIntf(intf, x + off, y + h, 'top'); break; + case 'L' : updateIntf(intf, x, y + off, 'right'); break; + case 'R' : updateIntf(intf, x + w, y + off, 'left'); break; + } + } else { + transform(intf.node.$ui, 0, 0); + } + }); + }; + device.getSize = function() { + return {width: unit * cols / 2, height: unit * rows / 2}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + if (data.layout.hideLabelOnWorkspace) { + device.$ui.on('deviceAdd', function() { + device.$ui.children('.simcir-device-label').css('display', 'none'); + }).on('deviceRemove', function() { + device.$ui.children('.simcir-device-label').css('display', ''); + }); + } + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + doLayout(); + }; + }; + }; + + var factories = {}; + var defaultToolbox = []; + var registerDevice = function(type, factory, deprecated) { + if (typeof factory == 'object') { + if (typeof factory.layout == 'object') { + factory = createCustomLayoutDeviceRefFactory(factory); + } else { + factory = createDeviceRefFactory(factory); + } + } + factories[type] = factory; + if (!deprecated) { + defaultToolbox.push({type: type}); + } + }; + + var createScrollbar = function() { + + // vertical only. + var _value = 0; + var _min = 0; + var _max = 0; + var _barSize = 0; + var _width = 0; + var _height = 0; + + var $body = createSVGElement('rect'); + var $bar = createSVGElement('g'). + append(createSVGElement('rect') ). + attr('class', 'simcir-scrollbar-bar'); + var $scrollbar = createSVGElement('g'). + attr('class', 'simcir-scrollbar'). + append($body).append($bar). + on('unitup', function(event) { + setValue(_value - unit * 2); + }).on('unitdown', function(event) { + setValue(_value + unit * 2); + }).on('rollup', function(event) { + setValue(_value - _barSize); + }).on('rolldown', function(event) { + setValue(_value + _barSize); + }); + + var dragPoint = null; + var bar_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var pos = transform($bar); + dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + $(document).on('mousemove', bar_mouseMoveHandler); + $(document).on('mouseup', bar_mouseUpHandler); + }; + var bar_mouseMoveHandler = function(event) { + calc(function(unitSize) { + setValue( (event.pageY - dragPoint.y) / unitSize); + }); + }; + var bar_mouseUpHandler = function(event) { + $(document).off('mousemove', bar_mouseMoveHandler); + $(document).off('mouseup', bar_mouseUpHandler); + }; + $bar.on('mousedown', bar_mouseDownHandler); + var body_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var off = $scrollbar.parent('svg').offset(); + var pos = transform($scrollbar); + var y = event.pageY - off.top - pos.y; + var barPos = transform($bar); + if (y < barPos.y) { + $scrollbar.trigger('rollup'); + } else { + $scrollbar.trigger('rolldown'); + } + }; + $body.on('mousedown', body_mouseDownHandler); + + var setSize = function(width, height) { + _width = width; + _height = height; + layout(); + }; + var layout = function() { + + $body.attr({x: 0, y: 0, width: _width, height: _height}); + + var visible = _max - _min > _barSize; + $bar.css('display', visible? 'inline' : 'none'); + if (!visible) { + return; + } + calc(function(unitSize) { + $bar.children('rect'). + attr({x: 0, y: 0, width: _width, height: _barSize * unitSize}); + transform($bar, 0, _value * unitSize); + }); + }; + var calc = function(f) { + f(_height / (_max - _min) ); + }; + var setValue = function(value) { + setValues(value, _min, _max, _barSize); + }; + var setValues = function(value, min, max, barSize) { + value = Math.max(min, Math.min(value, max - barSize) ); + var changed = (value != _value); + _value = value; + _min = min; + _max = max; + _barSize = barSize; + layout(); + if (changed) { + $scrollbar.trigger('scrollValueChange'); + } + }; + var getValue = function() { + return _value; + }; + controller($scrollbar, { + setSize: setSize, + setValues: setValues, + getValue: getValue + }); + return $scrollbar; + }; + + var getUniqueId = function() { + var uniqueIdCount = 0; + return function() { + return 'simcir-id' + uniqueIdCount++; + }; + }(); + + var createWorkspace = function(data) { + + data = $.extend({ + width: 400, + height: 200, + showToolbox: true, + editable: true, + toolbox: defaultToolbox, + devices: [], + connectors: [], + }, data); + + var scope = {}; + + var workspaceWidth = data.width; + var workspaceHeight = data.height; + var barWidth = unit; + var toolboxWidth = data.showToolbox? unit * 6 + barWidth : 0; + + var connectorsValid = true; + var connectorsValidator = function() { + if (!connectorsValid) { + updateConnectors(); + connectorsValid = true; + } + }; + + var $workspace = createSVG( + workspaceWidth, workspaceHeight). + attr('class', 'simcir-workspace'). + on('nodeValueChange', function(event) { + connectorsValid = false; + window.setTimeout(connectorsValidator, 0); + }). + on('dispose', function() { + $(this).find('.simcir-device').trigger('dispose'); + $toolboxPane.remove(); + $workspace.remove(); + }); + + disableSelection($workspace); + + var $defs = createSVGElement('defs'); + $workspace.append($defs); + + !function() { + + // fill with pin hole pattern. + var patId = getUniqueId(); + var pitch = unit / 2; + var w = workspaceWidth - toolboxWidth; + var h = workspaceHeight; + + $defs.append(createSVGElement('pattern'). + attr({id: patId, x: 0, y: 0, + width: pitch / w, height: pitch / h}).append( + createSVGElement('rect').attr('class', 'simcir-pin-hole'). + attr({x: 0, y: 0, width: 1, height: 1}) ) ); + + $workspace.append(createSVGElement('rect'). + attr({x: toolboxWidth, y: 0, width: w, height: h}). + css({fill: 'url(#' + patId + ')'}) ); + }(); + + var $toolboxDevicePane = createSVGElement('g'); + var $scrollbar = createScrollbar(); + $scrollbar.on('scrollValueChange', function(event) { + transform($toolboxDevicePane, 0, + -controller($scrollbar).getValue() ); + }); + controller($scrollbar).setSize(barWidth, workspaceHeight); + transform($scrollbar, toolboxWidth - barWidth, 0); + var $toolboxPane = createSVGElement('g'). + attr('class', 'simcir-toolbox'). + append(createSVGElement('rect'). + attr({x: 0, y: 0, + width: toolboxWidth, + height: workspaceHeight}) ). + append($toolboxDevicePane). + append($scrollbar).on('wheel', function(event) { + event.preventDefault(); + var oe = event.originalEvent || event; + if (oe.deltaY < 0) { + $scrollbar.trigger('unitup'); + } else if (oe.deltaY > 0) { + $scrollbar.trigger('unitdown'); + } + }); + + var $devicePane = createSVGElement('g'); + transform($devicePane, toolboxWidth, 0); + var $connectorPane = createSVGElement('g'); + var $temporaryPane = createSVGElement('g'); + + enableEvents($connectorPane, false); + enableEvents($temporaryPane, false); + + if (data.showToolbox) { + $workspace.append($toolboxPane); + } + $workspace.append($devicePane); + $workspace.append($connectorPane); + $workspace.append($temporaryPane); + + var addDevice = function($dev) { + $devicePane.append($dev); + $dev.trigger('deviceAdd'); + }; + + var removeDevice = function($dev) { + $dev.trigger('deviceRemove'); + // before remove, disconnect all + controller($dev).disconnectAll(); + $dev.trigger('dispose'); + updateConnectors(); + }; + + var disconnect = function($inNode) { + var inNode = controller($inNode); + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + updateConnectors(); + }; + + var updateConnectors = function() { + $connectorPane.children().remove(); + $devicePane.children('.simcir-device').each(function() { + var device = controller($(this) ); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + var p1 = offset(inNode.$ui); + var p2 = offset(inNode.getOutput().$ui); + var $conn = createConnector(p1.x, p1.y, p2.x, p2.y); + if (inNode.getOutput().getValue() != null) { + $conn.addClass('simcir-connector-hot'); + } + $connectorPane.append($conn); + } + }); + }); + }; + + var loadToolbox = function(data) { + var vgap = 8; + var y = vgap; + $.each(data.toolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + $toolboxDevicePane.append($dev); + var size = controller($dev).getSize(); + transform($dev, (toolboxWidth - barWidth - size.width) / 2, y); + y += (size.height + fontSize + vgap); + }); + controller($scrollbar).setValues(0, 0, y, workspaceHeight); + }; + + var getData = function() { + + // renumber all id + var devIdCount = 0; + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + var devId = 'dev' + devIdCount++; + device.id = devId; + $.each(device.getInputs(), function(i, node) { + node.id = devId + '.in' + i; + }); + $.each(device.getOutputs(), function(i, node) { + node.id = devId + '.out' + i; + }); + }); + + var toolbox = []; + var devices = []; + var connectors = []; + var clone = function(obj) { + return JSON.parse(JSON.stringify(obj) ); + }; + $toolboxDevicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + toolbox.push(device.deviceDef); + }); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + connectors.push({from:inNode.id, to:inNode.getOutput().id}); + } + }); + var pos = transform($dev); + var deviceDef = clone(device.deviceDef); + deviceDef.id = device.id; + deviceDef.x = pos.x; + deviceDef.y = pos.y; + deviceDef.label = device.getLabel(); + var state = device.getState(); + if (state != null) { + deviceDef.state = state; + } + devices.push(deviceDef); + }); + return { + width: data.width, + height: data.height, + showToolbox: data.showToolbox, + editable: data.editable, + toolbox: toolbox, + devices: devices, + connectors: connectors + }; + }; + var getText = function() { + + var data = getData(); + + var buf = ''; + var print = function(s) { + buf += s; + }; + var println = function(s) { + print(s); + buf += '\r\n'; + }; + var printArray = function(array) { + $.each(array, function(i, item) { + println(' ' + JSON.stringify(item). + replace(//g, '\\u003e') + + (i + 1 < array.length? ',' : '') ); + }); + }; + println('{'); + println(' "width":' + data.width + ','); + println(' "height":' + data.height + ','); + println(' "showToolbox":' + data.showToolbox + ','); + println(' "toolbox":['); + printArray(data.toolbox); + println(' ],'); + println(' "devices":['); + printArray(data.devices); + println(' ],'); + println(' "connectors":['); + printArray(data.connectors); + println(' ]'); + print('}'); + return buf; + }; + + //------------------------------------------- + // mouse operations + + var dragMoveHandler = null; + var dragCompleteHandler = null; + + var adjustDevice = function($dev) { + var pitch = unit / 2; + var adjust = function(v) { return Math.round(v / pitch) * pitch; }; + var pos = transform($dev); + var size = controller($dev).getSize(); + var x = Math.max(0, Math.min(pos.x, + workspaceWidth - toolboxWidth - size.width) ); + var y = Math.max(0, Math.min(pos.y, + workspaceHeight - size.height) ); + transform($dev, adjust(x), adjust(y) ); + }; + + var beginConnect = function(event, $target) { + var $srcNode = $target.closest('.simcir-node'); + var off = $workspace.offset(); + var pos = offset($srcNode); + if ($srcNode.attr('simcir-node-type') == 'in') { + disconnect($srcNode); + } + dragMoveHandler = function(event) { + var x = event.pageX - off.left; + var y = event.pageY - off.top; + $temporaryPane.children().remove(); + $temporaryPane.append(createConnector(pos.x, pos.y, x, y) ); + }; + dragCompleteHandler = function(event) { + $temporaryPane.children().remove(); + var $dst = $(event.target); + if (isActiveNode($dst) ) { + var $dstNode = $dst.closest('.simcir-node'); + connect($srcNode, $dstNode); + updateConnectors(); + } + }; + }; + + var beginNewDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = offset($dev); + $dev = createDevice(controller($dev).deviceDef, false, scope); + transform($dev, pos.x, pos.y); + $temporaryPane.append($dev); + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + transform($dev, + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + dragCompleteHandler = function(event) { + var $target = $(event.target); + if ($target.closest('.simcir-toolbox').length == 0) { + $dev.detach(); + var pos = transform($dev); + transform($dev, pos.x - toolboxWidth, pos.y); + adjustDevice($dev); + addDevice($dev); + } else { + $dev.trigger('dispose'); + } + }; + }; + + var $selectedDevices = []; + var addSelected = function($dev) { + controller($dev).setSelected(true); + $selectedDevices.push($dev); + }; + var deselectAll = function() { + $devicePane.children('.simcir-device').each(function() { + controller($(this) ).setSelected(false); + }); + $selectedDevices = []; + }; + + var beginMoveDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = transform($dev); + if (!controller($dev).isSelected() ) { + deselectAll(); + addSelected($dev); + // to front. + $dev.parent().append($dev.detach() ); + } + + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + // disable events while dragging. + enableEvents($dev, false); + var curPos = transform($dev); + var deltaPos = { + x: event.pageX - dragPoint.x - curPos.x, + y: event.pageY - dragPoint.y - curPos.y}; + $.each($selectedDevices, function(i, $dev) { + var curPos = transform($dev); + transform($dev, + curPos.x + deltaPos.x, + curPos.y + deltaPos.y); + }); + updateConnectors(); + }; + dragCompleteHandler = function(event) { + var $target = $(event.target); + enableEvents($dev, true); + $.each($selectedDevices, function(i, $dev) { + if ($target.closest('.simcir-toolbox').length == 0) { + adjustDevice($dev); + updateConnectors(); + } else { + removeDevice($dev); + } + }); + }; + }; + + var beginSelectDevice = function(event, $target) { + var intersect = function(rect1, rect2) { + return !( + rect1.x > rect2.x + rect2.width || + rect1.y > rect2.y + rect2.height || + rect1.x + rect1.width < rect2.x || + rect1.y + rect1.height < rect2.y); + }; + var pointToRect = function(p1, p2) { + return { + x: Math.min(p1.x, p2.x), + y: Math.min(p1.y, p2.y), + width: Math.abs(p1.x - p2.x), + height: Math.abs(p1.y - p2.y)}; + }; + deselectAll(); + var off = $workspace.offset(); + var pos = offset($devicePane); + var p1 = {x: event.pageX - off.left, y: event.pageY - off.top}; + dragMoveHandler = function(event) { + deselectAll(); + var p2 = {x: event.pageX - off.left, y: event.pageY - off.top}; + var selRect = pointToRect(p1, p2); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var devPos = transform($dev); + var devSize = controller($dev).getSize(); + var devRect = { + x: devPos.x + pos.x, + y: devPos.y + pos.y, + width: devSize.width, + height: devSize.height}; + if (intersect(selRect, devRect) ) { + addSelected($dev); + } + }); + $temporaryPane.children().remove(); + $temporaryPane.append(createSVGElement('rect'). + attr(selRect). + attr('class', 'simcir-selection-rect') ); + }; + }; + + var mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var $target = $(event.target); + if (!data.editable) { + return; + } + if (isActiveNode($target) ) { + beginConnect(event, $target); + } else if ($target.closest('.simcir-device').length == 1) { + if ($target.closest('.simcir-toolbox').length == 1) { + beginNewDevice(event, $target); + } else { + beginMoveDevice(event, $target); + } + } else { + beginSelectDevice(event, $target); + } + $(document).on('mousemove', mouseMoveHandler); + $(document).on('mouseup', mouseUpHandler); + }; + var mouseMoveHandler = function(event) { + if (dragMoveHandler != null) { + dragMoveHandler(event); + } + }; + var mouseUpHandler = function(event) { + if (dragCompleteHandler != null) { + dragCompleteHandler(event); + } + dragMoveHandler = null; + dragCompleteHandler = null; + $devicePane.children('.simcir-device').each(function() { + enableEvents($(this), true); + }); + $temporaryPane.children().remove(); + $(document).off('mousemove', mouseMoveHandler); + $(document).off('mouseup', mouseUpHandler); + }; + $workspace.on('mousedown', mouseDownHandler); + + //------------------------------------------- + // + + loadToolbox(data); + $.each(buildCircuit(data, false, scope), function(i, $dev) { + addDevice($dev); + }); + updateConnectors(); + + controller($workspace, { + data: getData, + text: getText + }); + + return $workspace; + }; + + var clearSimcir = function($placeHolder) { + $placeHolder = $($placeHolder[0]); + $placeHolder.find('.simcir-workspace').trigger('dispose'); + $placeHolder.children().remove(); + return $placeHolder; + }; + + var setupSimcir = function($placeHolder, data) { + + $placeHolder = clearSimcir($placeHolder); + + var $workspace = simcir.createWorkspace(data); + var $dataArea = $(''). + addClass('simcir-json-data-area'). + attr('readonly', 'readonly'). + css('width', $workspace.attr('width') + 'px'). + css('height', $workspace.attr('height') + 'px'); + var showData = false; + var toggle = function() { + $workspace.css('display', !showData? 'inline' : 'none'); + $dataArea.css('display', showData? 'inline' : 'none'); + if (showData) { + $dataArea.val(controller($workspace).text() ).focus(); + } + showData = !showData; + }; + $placeHolder.text(''); + $placeHolder.append($('
    '). + addClass('simcir-body'). + append($workspace). + append($dataArea). + on('click', function(event) { + if (event.ctrlKey || event.metaKey) { + toggle(); + } + })); + toggle(); + return $placeHolder; + }; + + var setupSimcirDoc = function($placeHolder) { + var $table = $('
    '). + addClass('simcir-doc-table'); + $.each(defaultToolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + var device = controller($dev); + if (!device.doc) { + return; + } + var doc = $.extend({description: '', params: []},device.doc); + var size = device.getSize(); + + var $tr = $(''); + var hgap = 32; + var vgap = 8; + var $view = createSVG(size.width + hgap * 2, + size.height + vgap * 2 + fontSize); + var $dev = createDevice(deviceDef); + transform($dev, hgap, vgap); + + $view.append($dev); + $tr.append($('').css('text-align', 'center').append($view) ); + var $desc = $(''); + $tr.append($desc); + + if (doc.description) { + $desc.append($(''). + text(doc.description) ); + } + + $desc.append($('
    Params
    ').addClass('simcir-doc-title') ); + var $paramsTable = $('
    '). + addClass('simcir-doc-params-table'); + $paramsTable.children('tbody').append($(''). + append($('Name') ). + append($('Type') ). + append($('Default') ). + append($('Description') ) ); + $paramsTable.children('tbody').append($(''). + append($('type') ). + append($('string') ). + append($('-'). + css('text-align', 'center') ). + append($('"' + deviceDef.type + '"') ) ); + if (!doc.labelless) { + $paramsTable.children('tbody').append($(''). + append($('label') ). + append($('string') ). + append($('same with type').css('text-align', 'center') ). + append($('label for a device.') ) ); + } + if (doc.params) { + $.each(doc.params, function(i, param) { + $paramsTable.children('tbody').append($(''). + append($('').text(param.name) ). + append($('').text(param.type) ). + append($('').css('text-align', 'center'). + text(param.defaultValue) ). + append($('').text(param.description) ) ); + }); + } + $desc.append($paramsTable); + + if (doc.code) { + $desc.append($('
    Code
    ').addClass('simcir-doc-title') ); + $desc.append($('
    '). + addClass('simcir-doc-code').text(doc.code) ); + } + + $table.children('tbody').append($tr); + }); + + $placeHolder.append($table); + }; + + $(function() { + $('.simcir').each(function() { + var $placeHolder = $(this); + var text = $placeHolder.text().replace(/^\s+|\s+$/g, ''); + setupSimcir($placeHolder, JSON.parse(text || '{}') ); + }); + }); + + $(function() { + $('.simcir-doc').each(function() { + setupSimcirDoc($(this) ); + }); + }); + + $.extend($s, { + registerDevice: registerDevice, + clearSimcir: clearSimcir, + setupSimcir: setupSimcir, + createWorkspace: createWorkspace, + createSVGElement: createSVGElement, + offset: offset, + transform: transform, + enableEvents: enableEvents, + graphics: graphics, + controller: controller, + unit: unit + }); +}(simcir); + +// +// built-in devices +// +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + out1.setValue(in1.getValue() ); + } + }; + }; + + var createPortFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var cx = size.width / 2; + var cy = size.height / 2; + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 2}). + attr('class', 'simcir-port simcir-node-type-' + type) ); + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 4}). + attr('class', 'simcir-port-hole') ); + }; + }; + }; + + var createJointFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + // register built-in devices + $s.registerDevice('In', createPortFactory('in') ); + $s.registerDevice('Out', createPortFactory('out') ); + $s.registerDevice('Joint', createJointFactory() ); + +}(simcir); diff --git a/project1/Libraries/wavedrom/LICENSE.txt b/project1/Libraries/wavedrom/LICENSE.txt new file mode 100644 index 00000000..d244dd2e --- /dev/null +++ b/project1/Libraries/wavedrom/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2011-2019 Aliaksei Chapyzhenka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/project1/Libraries/wavedrom/default.js b/project1/Libraries/wavedrom/default.js new file mode 100644 index 00000000..a310df8c --- /dev/null +++ b/project1/Libraries/wavedrom/default.js @@ -0,0 +1,3 @@ +var WaveSkin=WaveSkin||{};WaveSkin.default=["svg",{"id":"svg","xmlns":"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","height":"0"},["style",{"type":"text/css"},"text{font-size:11pt;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;fill-opacity:1;font-family:Helvetica}.muted{fill:#aaa}.warning{fill:#f6b900}.error{fill:#f60000}.info{fill:#0041c4}.success{fill:#00ab00}.h1{font-size:33pt;font-weight:bold}.h2{font-size:27pt;font-weight:bold}.h3{font-size:20pt;font-weight:bold}.h4{font-size:14pt;font-weight:bold}.h5{font-size:11pt;font-weight:bold}.h6{font-size:8pt;font-weight:bold}.s1{fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s2{fill:none;stroke:#000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s3{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s4{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s5{fill:#fff;stroke:none}.s6{color:#000;fill:#ffffb4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s7{color:#000;fill:#ffe0b9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s8{color:#000;fill:#b9e0ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s9{fill:#000;fill-opacity:1;stroke:none}.s10{color:#000;fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s11{fill:#0041c4;fill-opacity:1;stroke:none}.s12{fill:none;stroke:#0041c4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}"],["defs",["g",{"id":"socket"},["rect",{"y":"15","x":"6","height":"20","width":"20"}]],["g",{"id":"pclk"},["path",{"d":"M0,20 0,0 20,0","class":"s1"}]],["g",{"id":"nclk"},["path",{"d":"m0,0 0,20 20,0","class":"s1"}]],["g",{"id":"000"},["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"0m0"},["path",{"d":"m0,20 3,0 3,-10 3,10 11,0","class":"s1"}]],["g",{"id":"0m1"},["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"0mx"},["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 5,20","class":"s2"}],["path",{"d":"M20,0 4,16","class":"s2"}],["path",{"d":"M15,0 6,9","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"0md"},["path",{"d":"m8,20 10,0","class":"s3"}],["path",{"d":"m0,20 5,0","class":"s1"}]],["g",{"id":"0mu"},["path",{"d":"m0,20 3,0 C 7,10 10.107603,0 20,0","class":"s1"}]],["g",{"id":"0mz"},["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"111"},["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"1m0"},["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}]],["g",{"id":"1m1"},["path",{"d":"M0,0 3,0 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"1mx"},["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 6,9","class":"s2"}],["path",{"d":"M10,0 5,5","class":"s2"}],["path",{"d":"M3.5,1.5 5,0","class":"s2"}]],["g",{"id":"1md"},["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}]],["g",{"id":"1mu"},["path",{"d":"M0,0 5,0","class":"s1"}],["path",{"d":"M8,0 18,0","class":"s3"}]],["g",{"id":"1mz"},["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s1"}]],["g",{"id":"xxx"},["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,5 5,0","class":"s2"}],["path",{"d":"M0,10 10,0","class":"s2"}],["path",{"d":"M0,15 15,0","class":"s2"}],["path",{"d":"M0,20 20,0","class":"s2"}],["path",{"d":"M5,20 20,5","class":"s2"}],["path",{"d":"M10,20 20,10","class":"s2"}],["path",{"d":"m15,20 5,-5","class":"s2"}]],["g",{"id":"xm0"},["path",{"d":"M0,0 4,0 9,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,5 4,1","class":"s2"}],["path",{"d":"M0,10 5,5","class":"s2"}],["path",{"d":"M0,15 6,9","class":"s2"}],["path",{"d":"M0,20 7,13","class":"s2"}],["path",{"d":"M5,20 8,17","class":"s2"}]],["g",{"id":"xm1"},["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,20 4,20 9,0","class":"s1"}],["path",{"d":"M0,5 5,0","class":"s2"}],["path",{"d":"M0,10 9,1","class":"s2"}],["path",{"d":"M0,15 7,8","class":"s2"}],["path",{"d":"M0,20 5,15","class":"s2"}]],["g",{"id":"xmx"},["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,5 5,0","class":"s2"}],["path",{"d":"M0,10 10,0","class":"s2"}],["path",{"d":"M0,15 15,0","class":"s2"}],["path",{"d":"M0,20 20,0","class":"s2"}],["path",{"d":"M5,20 20,5","class":"s2"}],["path",{"d":"M10,20 20,10","class":"s2"}],["path",{"d":"m15,20 5,-5","class":"s2"}]],["g",{"id":"xmd"},["path",{"d":"m0,0 4,0 c 3,10 6,20 16,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,5 4,1","class":"s2"}],["path",{"d":"M0,10 5.5,4.5","class":"s2"}],["path",{"d":"M0,15 6.5,8.5","class":"s2"}],["path",{"d":"M0,20 8,12","class":"s2"}],["path",{"d":"m5,20 5,-5","class":"s2"}],["path",{"d":"m10,20 2.5,-2.5","class":"s2"}]],["g",{"id":"xmu"},["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"m0,20 4,0 C 7,10 10,0 20,0","class":"s1"}],["path",{"d":"M0,5 5,0","class":"s2"}],["path",{"d":"M0,10 10,0","class":"s2"}],["path",{"d":"M0,15 10,5","class":"s2"}],["path",{"d":"M0,20 6,14","class":"s2"}]],["g",{"id":"xmz"},["path",{"d":"m0,0 4,0 c 6,10 11,10 16,10","class":"s1"}],["path",{"d":"m0,20 4,0 C 10,10 15,10 20,10","class":"s1"}],["path",{"d":"M0,5 4.5,0.5","class":"s2"}],["path",{"d":"M0,10 6.5,3.5","class":"s2"}],["path",{"d":"M0,15 8.5,6.5","class":"s2"}],["path",{"d":"M0,20 11.5,8.5","class":"s2"}]],["g",{"id":"ddd"},["path",{"d":"m0,20 20,0","class":"s3"}]],["g",{"id":"dm0"},["path",{"d":"m0,20 10,0","class":"s3"}],["path",{"d":"m12,20 8,0","class":"s1"}]],["g",{"id":"dm1"},["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"dmx"},["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 5,20","class":"s2"}],["path",{"d":"M20,0 4,16","class":"s2"}],["path",{"d":"M15,0 6,9","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"dmd"},["path",{"d":"m0,20 20,0","class":"s3"}]],["g",{"id":"dmu"},["path",{"d":"m0,20 3,0 C 7,10 10.107603,0 20,0","class":"s1"}]],["g",{"id":"dmz"},["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"uuu"},["path",{"d":"M0,0 20,0","class":"s3"}]],["g",{"id":"um0"},["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}]],["g",{"id":"um1"},["path",{"d":"M0,0 10,0","class":"s3"}],["path",{"d":"m12,0 8,0","class":"s1"}]],["g",{"id":"umx"},["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 6,9","class":"s2"}],["path",{"d":"M10,0 5,5","class":"s2"}],["path",{"d":"M3.5,1.5 5,0","class":"s2"}]],["g",{"id":"umd"},["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}]],["g",{"id":"umu"},["path",{"d":"M0,0 20,0","class":"s3"}]],["g",{"id":"umz"},["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s4"}]],["g",{"id":"zzz"},["path",{"d":"m0,10 20,0","class":"s1"}]],["g",{"id":"zm0"},["path",{"d":"m0,10 6,0 3,10 11,0","class":"s1"}]],["g",{"id":"zm1"},["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"zmx"},["path",{"d":"m6,10 3,10 11,0","class":"s1"}],["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 6.5,8.5","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}]],["g",{"id":"zmd"},["path",{"d":"m0,10 7,0 c 3,5 8,10 13,10","class":"s1"}]],["g",{"id":"zmu"},["path",{"d":"m0,10 7,0 C 10,5 15,0 20,0","class":"s1"}]],["g",{"id":"zmz"},["path",{"d":"m0,10 20,0","class":"s1"}]],["g",{"id":"gap"},["path",{"d":"m7,-2 -4,0 c -5,0 -5,24 -10,24 l 4,0 C 2,22 2,-2 7,-2 z","class":"s5"}],["path",{"d":"M-7,22 C -2,22 -2,-2 3,-2","class":"s1"}],["path",{"d":"M-3,22 C 2,22 2,-2 7,-2","class":"s1"}]],["g",{"id":"0mv-3"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s6"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"1mv-3"},["path",{"d":"M2.875,0 20,0 20,20 9,20 z","class":"s6"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"xmv-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,5 3.5,1.5","class":"s2"}],["path",{"d":"M0,10 4.5,5.5","class":"s2"}],["path",{"d":"M0,15 6,9","class":"s2"}],["path",{"d":"M0,20 4,16","class":"s2"}]],["g",{"id":"dmv-3"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s6"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"umv-3"},["path",{"d":"M3,0 20,0 20,20 9,20 z","class":"s6"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"zmv-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"m6,10 3,10 11,0","class":"s1"}],["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"vvv-3"},["path",{"d":"M20,20 0,20 0,0 20,0","class":"s6"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vm0-3"},["path",{"d":"M0,20 0,0 3,0 9,20","class":"s6"}],["path",{"d":"M0,0 3,0 9,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vm1-3"},["path",{"d":"M0,0 0,20 3,20 9,0","class":"s6"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0","class":"s1"}]],["g",{"id":"vmx-3"},["path",{"d":"M0,0 0,20 3,20 6,10 3,0","class":"s6"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 7,8","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}]],["g",{"id":"vmd-3"},["path",{"d":"m0,0 0,20 20,0 C 10,20 7,10 3,0","class":"s6"}],["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vmu-3"},["path",{"d":"m0,0 0,20 3,0 C 7,10 10,0 20,0","class":"s6"}],["path",{"d":"m0,20 3,0 C 7,10 10,0 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vmz-3"},["path",{"d":"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20","class":"s6"}],["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s1"}],["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"vmv-3-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s6"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-3-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s6"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-3-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s6"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-4-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s7"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-4-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s7"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-4-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s7"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-5-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s8"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-5-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s8"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-5-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s8"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"0mv-4"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s7"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"1mv-4"},["path",{"d":"M2.875,0 20,0 20,20 9,20 z","class":"s7"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"xmv-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,5 3.5,1.5","class":"s2"}],["path",{"d":"M0,10 4.5,5.5","class":"s2"}],["path",{"d":"M0,15 6,9","class":"s2"}],["path",{"d":"M0,20 4,16","class":"s2"}]],["g",{"id":"dmv-4"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s7"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"umv-4"},["path",{"d":"M3,0 20,0 20,20 9,20 z","class":"s7"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"zmv-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"m6,10 3,10 11,0","class":"s1"}],["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"0mv-5"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s8"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"1mv-5"},["path",{"d":"M2.875,0 20,0 20,20 9,20 z","class":"s8"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"xmv-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,5 3.5,1.5","class":"s2"}],["path",{"d":"M0,10 4.5,5.5","class":"s2"}],["path",{"d":"M0,15 6,9","class":"s2"}],["path",{"d":"M0,20 4,16","class":"s2"}]],["g",{"id":"dmv-5"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s8"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"umv-5"},["path",{"d":"M3,0 20,0 20,20 9,20 z","class":"s8"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"zmv-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"m6,10 3,10 11,0","class":"s1"}],["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"vvv-4"},["path",{"d":"M20,20 0,20 0,0 20,0","class":"s7"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vm0-4"},["path",{"d":"M0,20 0,0 3,0 9,20","class":"s7"}],["path",{"d":"M0,0 3,0 9,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vm1-4"},["path",{"d":"M0,0 0,20 3,20 9,0","class":"s7"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0","class":"s1"}]],["g",{"id":"vmx-4"},["path",{"d":"M0,0 0,20 3,20 6,10 3,0","class":"s7"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 7,8","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}]],["g",{"id":"vmd-4"},["path",{"d":"m0,0 0,20 20,0 C 10,20 7,10 3,0","class":"s7"}],["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vmu-4"},["path",{"d":"m0,0 0,20 3,0 C 7,10 10,0 20,0","class":"s7"}],["path",{"d":"m0,20 3,0 C 7,10 10,0 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vmz-4"},["path",{"d":"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20","class":"s7"}],["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s1"}],["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"vvv-5"},["path",{"d":"M20,20 0,20 0,0 20,0","class":"s8"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vm0-5"},["path",{"d":"M0,20 0,0 3,0 9,20","class":"s8"}],["path",{"d":"M0,0 3,0 9,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vm1-5"},["path",{"d":"M0,0 0,20 3,20 9,0","class":"s8"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0","class":"s1"}]],["g",{"id":"vmx-5"},["path",{"d":"M0,0 0,20 3,20 6,10 3,0","class":"s8"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 7,8","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}]],["g",{"id":"vmd-5"},["path",{"d":"m0,0 0,20 20,0 C 10,20 7,10 3,0","class":"s8"}],["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vmu-5"},["path",{"d":"m0,0 0,20 3,0 C 7,10 10,0 20,0","class":"s8"}],["path",{"d":"m0,20 3,0 C 7,10 10,0 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vmz-5"},["path",{"d":"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20","class":"s8"}],["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s1"}],["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"Pclk"},["path",{"d":"M-3,12 0,3 3,12 C 1,11 -1,11 -3,12 z","class":"s9"}],["path",{"d":"M0,20 0,0 20,0","class":"s1"}]],["g",{"id":"Nclk"},["path",{"d":"M-3,8 0,17 3,8 C 1,9 -1,9 -3,8 z","class":"s9"}],["path",{"d":"m0,0 0,20 20,0","class":"s1"}]],["g",{"id":"vvv-2"},["path",{"d":"M20,20 0,20 0,0 20,0","class":"s10"}],["path",{"d":"m0,20 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vm0-2"},["path",{"d":"M0,20 0,0 3,0 9,20","class":"s10"}],["path",{"d":"M0,0 3,0 9,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vm1-2"},["path",{"d":"M0,0 0,20 3,20 9,0","class":"s10"}],["path",{"d":"M0,0 20,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0","class":"s1"}]],["g",{"id":"vmx-2"},["path",{"d":"M0,0 0,20 3,20 6,10 3,0","class":"s10"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m20,15 -5,5","class":"s2"}],["path",{"d":"M20,10 10,20","class":"s2"}],["path",{"d":"M20,5 8,17","class":"s2"}],["path",{"d":"M20,0 7,13","class":"s2"}],["path",{"d":"M15,0 7,8","class":"s2"}],["path",{"d":"M10,0 9,1","class":"s2"}]],["g",{"id":"vmd-2"},["path",{"d":"m0,0 0,20 20,0 C 10,20 7,10 3,0","class":"s10"}],["path",{"d":"m0,0 3,0 c 4,10 7,20 17,20","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"vmu-2"},["path",{"d":"m0,0 0,20 3,0 C 7,10 10,0 20,0","class":"s10"}],["path",{"d":"m0,20 3,0 C 7,10 10,0 20,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"vmz-2"},["path",{"d":"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20","class":"s10"}],["path",{"d":"m0,0 3,0 c 7,10 12,10 17,10","class":"s1"}],["path",{"d":"m0,20 3,0 C 10,10 15,10 20,10","class":"s1"}]],["g",{"id":"0mv-2"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s10"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"1mv-2"},["path",{"d":"M2.875,0 20,0 20,20 9,20 z","class":"s10"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"xmv-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,5 3.5,1.5","class":"s2"}],["path",{"d":"M0,10 4.5,5.5","class":"s2"}],["path",{"d":"M0,15 6,9","class":"s2"}],["path",{"d":"M0,20 4,16","class":"s2"}]],["g",{"id":"dmv-2"},["path",{"d":"M9,0 20,0 20,20 3,20 z","class":"s10"}],["path",{"d":"M3,20 9,0 20,0","class":"s1"}],["path",{"d":"m0,20 20,0","class":"s1"}]],["g",{"id":"umv-2"},["path",{"d":"M3,0 20,0 20,20 9,20 z","class":"s10"}],["path",{"d":"m3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,0 20,0","class":"s1"}]],["g",{"id":"zmv-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"m6,10 3,10 11,0","class":"s1"}],["path",{"d":"M0,10 6,10 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-3-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s6"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-4-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s7"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-5-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s8"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-2-3"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s6"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s10"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-2-4"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s7"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s10"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-2-5"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s8"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s10"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"vmv-2-2"},["path",{"d":"M9,0 20,0 20,20 9,20 6,10 z","class":"s10"}],["path",{"d":"M3,0 0,0 0,20 3,20 6,10 z","class":"s10"}],["path",{"d":"m0,0 3,0 6,20 11,0","class":"s1"}],["path",{"d":"M0,20 3,20 9,0 20,0","class":"s1"}]],["g",{"id":"arrow0"},["path",{"d":"m-12,-3 9,3 -9,3 c 1,-2 1,-4 0,-6 z","class":"s11"}],["path",{"d":"M0,0 -15,0","class":"s12"}]],["marker",{"id":"arrowhead","style":"fill:#0041c4","markerHeight":"7","markerWidth":"10","markerUnits":"strokeWidth","viewBox":"0 -4 11 8","refX":"15","refY":"0","orient":"auto"},["path",{"d":"M0 -4 11 0 0 4z"}]],["marker",{"id":"arrowtail","style":"fill:#0041c4","markerHeight":"7","markerWidth":"10","markerUnits":"strokeWidth","viewBox":"-11 -4 11 8","refX":"-15","refY":"0","orient":"auto"},["path",{"d":"M0 -4 -11 0 0 4z"}]]],["g",{"id":"waves"},["g",{"id":"lanes"}],["g",{"id":"groups"}]]]; +try { module.exports = WaveSkin; } catch(err) {} + diff --git a/project1/Libraries/wavedrom/wavedrom.min.js b/project1/Libraries/wavedrom/wavedrom.min.js new file mode 100644 index 00000000..0ef15e9a --- /dev/null +++ b/project1/Libraries/wavedrom/wavedrom.min.js @@ -0,0 +1,3 @@ +/*! wavedrom 2019-05-21 */ + +!function o(s,i,c){function l(t,e){if(!i[t]){if(!s[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(u)return u(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var a=i[t]={exports:{}};s[t][0].call(a.exports,function(e){return l(s[t][1][e]||e)},a,a.exports,o,s,i,c)}return i[t].exports}for(var u="function"==typeof require&&require,e=0;et+u.offsetWidth||e.yr+u.offsetHeight)&&(u.parentNode.removeChild(u),document.body.removeEventListener("mousedown",f,!1))}(l=document.getElementById(c+i)).childNodes[0].addEventListener("contextmenu",function(e){var t,r,n;(u=document.createElement("div")).className="wavedromMenu",u.style.top=e.y+"px",u.style.left=e.x+"px",t=document.createElement("ul"),(r=document.createElement("li")).innerHTML="Save as PNG",t.appendChild(r),(n=document.createElement("li")).innerHTML="Save as SVG",t.appendChild(n),u.appendChild(t),document.body.appendChild(u),r.addEventListener("click",function(){var e,t,r,n,a,o,s;e="",0!==i&&(e+=(t=document.getElementById(c+0)).innerHTML.substring(166,t.innerHTML.indexOf(''))),e=[l.innerHTML.slice(0,166),e,l.innerHTML.slice(166)].join(""),r="data:image/svg+xml;base64,"+btoa(e),(n=new Image).src=r,(a=document.createElement("canvas")).width=n.width,a.height=n.height,a.getContext("2d").drawImage(n,0,0),o=a.toDataURL("image/png"),(s=document.createElement("a")).href=o,s.download="wavedrom.png",s.click(),u.parentNode.removeChild(u),document.body.removeEventListener("mousedown",f,!1)},!1),n.addEventListener("click",function(){var e,t,r,n;e="",0!==i&&(e+=(t=document.getElementById(c+0)).innerHTML.substring(166,t.innerHTML.indexOf(''))),e=[l.innerHTML.slice(0,166),e,l.innerHTML.slice(166)].join(""),r="data:image/svg+xml;base64,"+btoa(e),(n=document.createElement("a")).href=r,n.download="wavedrom.svg",n.click(),u.parentNode.removeChild(u),document.body.removeEventListener("mousedown",f,!1)},!1),u.addEventListener("contextmenu",function(e){e.preventDefault()},!1),document.body.addEventListener("mousedown",f,!1),e.preventDefault()},!1)}},{}],2:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,a,o=r.x-t.x,s=r.y-t.y,i=(t.x+r.x)/2,c=(t.y+r.y)/2;switch(e.shape){case"-":break;case"~":n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+.3*o+", "+s+" "+o+", "+s;break;case"-~":n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+o+", "+s+" "+o+", "+s,e.label&&(i=t.x+.75*(r.x-t.x));break;case"~-":n="M "+t.x+","+t.y+" c 0, 0 "+.3*o+", "+s+" "+o+", "+s,e.label&&(i=t.x+.25*(r.x-t.x));break;case"-|":n="m "+t.x+","+t.y+" "+o+",0 0,"+s,e.label&&(i=r.x);break;case"|-":n="m "+t.x+","+t.y+" 0,"+s+" "+o+",0",e.label&&(i=t.x);break;case"-|-":n="m "+t.x+","+t.y+" "+o/2+",0 0,"+s+" "+o/2+",0";break;case"->":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none";break;case"~>":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+.3*o+", "+s+" "+o+", "+s;break;case"-~>":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+o+", "+s+" "+o+", "+s,e.label&&(i=t.x+.75*(r.x-t.x));break;case"~->":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="M "+t.x+","+t.y+" c 0, 0 "+.3*o+", "+s+" "+o+", "+s,e.label&&(i=t.x+.25*(r.x-t.x));break;case"-|>":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="m "+t.x+","+t.y+" "+o+",0 0,"+s,e.label&&(i=r.x);break;case"|->":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="m "+t.x+","+t.y+" 0,"+s+" "+o+",0",e.label&&(i=t.x);break;case"-|->":a="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",n="m "+t.x+","+t.y+" "+o/2+",0 0,"+s+" "+o/2+",0";break;case"<->":a="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none";break;case"<~>":a="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+.3*o+", "+s+" "+o+", "+s;break;case"<-~>":a="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",n="M "+t.x+","+t.y+" c "+.7*o+", 0 "+o+", "+s+" "+o+", "+s,e.label&&(i=t.x+.75*(r.x-t.x));break;case"<-|>":a="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",n="m "+t.x+","+t.y+" "+o+",0 0,"+s,e.label&&(i=r.x);break;case"<-|->":a="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",n="m "+t.x+","+t.y+" "+o/2+",0 0,"+s+" "+o/2+",0";break;default:a="fill:none;stroke:#F00;stroke-width:1"}return{lx:i,ly:c,d:n,style:a}}},{}],3:[function(e,t,r){t.exports={chars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,74,74,118,89,25,44,44,52,78,37,44,37,37,74,74,74,74,74,74,74,74,74,74,37,37,78,78,78,74,135,89,89,96,96,89,81,103,96,37,67,89,74,109,96,103,89,103,96,89,81,96,89,127,89,87,81,37,37,37,61,74,44,74,74,67,74,74,37,74,74,30,30,67,30,112,74,74,74,74,44,67,37,74,67,95,66,65,67,44,34,44,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,43,74,74,74,74,34,74,44,98,49,74,78,0,98,73,53,73,44,44,44,77,71,37,44,44,49,74,111,111,111,81,89,89,89,89,89,89,133,96,89,89,89,89,37,37,37,37,96,96,103,103,103,103,103,78,103,96,96,96,96,87,89,81,74,74,74,74,74,74,118,67,74,74,74,74,36,36,36,36,74,74,74,74,74,74,74,73,81,74,74,74,74,65,74,65,89,74,89,74,89,74,96,67,96,67,96,67,96,67,96,82,96,74,89,74,89,74,89,74,89,74,89,74,103,74,103,74,103,74,103,74,96,74,96,74,37,36,37,36,37,36,37,30,37,36,98,59,67,30,89,67,67,74,30,74,30,74,39,74,44,74,30,96,74,96,74,96,74,80,96,74,103,74,103,74,103,74,133,126,96,44,96,44,96,44,89,67,89,67,89,67,89,67,81,38,81,50,81,37,96,74,96,74,96,74,96,74,96,74,96,74,127,95,87,65,87,81,67,81,67,81,67,30,84,97,91,84,91,84,94,92,73,104,109,91,84,81,84,100,82,76,74,103,91,131,47,40,99,77,37,79,130,100,84,104,114,87,126,101,87,84,93,84,69,84,46,52,82,52,82,114,89,102,96,100,98,91,70,88,88,77,70,85,89,77,67,84,39,65,61,39,189,173,153,111,105,61,123,123,106,89,74,37,30,103,74,96,74,96,74,96,74,96,74,96,74,81,91,81,91,81,130,131,102,84,103,84,87,78,104,81,104,81,88,76,37,189,173,153,103,84,148,90,100,84,89,74,133,118,103,81],other:114}},{}],4:[function(e,t,r){"use strict";var n=e("onml/lib/stringify.js"),a=e("./w3.js");t.exports=function(e){var t=document.createElementNS(a.svg,"g");return t.innerHTML=n(e),t.childNodes[0]}},{"./w3.js":33,"onml/lib/stringify.js":36}],5:[function(e,t,r){"use strict";var n=e("./eva"),a=e("./render-wave-form");t.exports=function(){a(0,n("InputJSON_0"),"WaveDrom_Display_")}},{"./eva":6,"./render-wave-form":30}],6:[function(require,module,exports){"use strict";function eva(id){var TheTextBox,source;function erra(e){return{signal:[{name:["tspan",["tspan",{class:"error h5"},"Error: "],e.message]}]}}if(TheTextBox=document.getElementById(id),TheTextBox.type&&"textarea"===TheTextBox.type)try{source=eval("("+TheTextBox.value+")")}catch(e){return erra(e)}else try{source=eval("("+TheTextBox.innerHTML+")")}catch(e){return erra(e)}if("[object Object]"!==Object.prototype.toString.call(source))return erra({message:'[Semantic]: The root has to be an Object: "{signal:[...]}"'});if(source.signal){if("[object Array]"!==Object.prototype.toString.call(source.signal))return erra({message:'[Semantic]: "signal" object has to be an Array "signal:[]"'})}else if(source.assign){if("[object Array]"!==Object.prototype.toString.call(source.assign))return erra({message:'[Semantic]: "assign" object hasto be an Array "assign:[]"'})}else if(!source.reg)return erra({message:'[Semantic]: "signal:[...]" or "assign:[...]" property is missing inside the root Object'});return source}module.exports=eva},{}],7:[function(e,t,r){"use strict";t.exports=function(e){var t=0,r=0,n=[];return e.forEach(function(e){"vvv-2"===e||"vvv-3"===e||"vvv-4"===e||"vvv-5"===e?r+=1:0!==r&&(n.push(t-(r+1)/2),r=0),t+=1}),0!==r&&n.push(t-(r+1)/2),n}},{}],8:[function(e,t,r){"use strict";t.exports=function(e,t,r){var n,a,o=[];if(4===e.length){for(a=0;a"===o&&(i=!1,o=l.shift()),n=1;"."===l[0]||"|"===l[0];)l.shift(),n+=1;u=i?u.concat(h(a+o,0,n-r.period)):u.concat(h(a+o,t,n))}for(s=0;sdiv.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}'}},{"./append-save-as-dialog":1,"./eva":6,"./render-wave-form":30}],18:[function(e,t,r){"use strict";t.exports=function e(t,r){var n,a,o={},s={x:10};for("string"!=typeof t[0]&&"number"!=typeof t[0]||(a=t[0],s.x=25),r.x+=s.x,n=0;n"===r&&(s=!1,r=a.shift()),o+=s?1:2*t.period,"|"===r&&n.push(["use",{"xlink:href":"#gap",transform:"translate("+t.xs*((o-(s?0:t.period))*t.hscale-t.phase)+")"}]);return n}t.exports=function(e,t,r){var n,a,o=[];if(e)for(n in e)r.period=e[n].period?e[n].period:1,r.phase=(e[n].phase?2*e[n].phase:0)+r.xmin_cfg,a=s(e[n].wave,r),o=o.concat([["g",{id:"wavegap_"+n+"_"+t,transform:"translate(0,"+(r.y0+n*r.yo)+")"}].concat(a)]);return["g",{id:"wavegaps_"+t}].concat(o)}},{}],23:[function(e,t,r){"use strict";var c=e("tspan");t.exports=function(e,r,n){var a,o,s,i=["g"];return e.forEach(function(e,t){i.push(["path",{id:"group_"+t+"_"+r,d:"m "+(e.x+.5)+","+(e.y*n.yo+3.5+n.yh0+n.yh1)+" c -3,0 -5,2 -5,5 l 0,"+(e.height*n.yo-16)+" c 0,3 2,5 5,5",style:"stroke:#0041c4;stroke-width:1;fill:none"}]),void 0!==e.name&&(a=e.x-10,o=n.yo*(e.y+e.height/2)+n.yh0+n.yh1,(s=c.parse(e.name)).unshift("text",{"text-anchor":"middle",class:"info","xml:space":"preserve"}),i.push(["g",{transform:"translate("+a+","+o+")"},["g",{transform:"rotate(270)"},s]]))}),i}},{tspan:37}],24:[function(e,t,r){"use strict";var n=e("tspan"),a=e("./text-width.js");t.exports=function(e,t){var r=a(t,8)+2;return["g",{transform:"translate("+e.x+","+e.y+")"},["rect",{x:-(r>>1),y:-5,width:r,height:10,style:"fill:#FFF;"}],["text",{"text-anchor":"middle",y:3,style:"font-size:8px;"}].concat(n.parse(t))]}},{"./text-width.js":32,tspan:37}],25:[function(e,t,r){"use strict";var s=e("./render-marks"),i=e("./render-arcs"),c=e("./render-gaps");t.exports=function(e,t,r,n,a,o){return[s(t,e,o,a)].concat(r.res).concat([i(n.lanes,e,a,o)]).concat([c(n.lanes,e,o)])}},{"./render-arcs":20,"./render-gaps":22,"./render-marks":26}],26:[function(e,t,r){"use strict";var m=e("tspan");function u(e,t,r){return e[t]&&e[t].text?[["text",{x:e.xmax*e.xs/2,y:r,fill:"#000","text-anchor":"middle","xml:space":"preserve"}].concat(m.parse(e[t].text))]:[]}function f(e,t,r,n,a,o,s){var i,c,l,u,f=1,d=0,h=[];if(void 0===e[t]||void 0===e[t][r])return[];if("string"==typeof(c=e[t][r]))c=c.split(" ");else if("number"==typeof c||"boolean"==typeof c)for(i=Number(c),c=[],u=0;u>o&1,t+n*(a/2-o-.5),r));return s}function n(e,o){var s=o.hspace/o.mod,i=["g",{transform:d(s/2,o.vspace/5)}],c=["g",{transform:d(s/2,o.vspace/2+4)}],l=["g",{transform:d(s/2,o.vspace)}],u=["g",{transform:d(0,o.vspace/4)}];return e.forEach(function(e){var t,r,n,a;if(t=0,r=o.mod-1,n=o.index*o.mod,a=(o.index+1)*o.mod-1,e.lsb/o.mod>>0===o.index)t=e.lsbm,n=e.lsb,e.msb/o.mod>>0===o.index&&(a=e.msb,r=e.msbm);else{if(e.msb/o.mod>>0!==o.index)return;a=e.msb,r=e.msbm}i.push(h(n,s*(o.mod-t-1))),t!==r&&i.push(h(a,s*(o.mod-r-1))),e.name&&c.push(p(e.name,s*(o.mod-(r+t)/2-1),0,s,e.bits)),void 0!==e.name&&void 0===e.type||u.push(["rect",{style:"fill-opacity:0.1"+function(e){var t=f[e];return void 0!==t?";fill:hsl("+t+",100%,50%)":""}(e.type),x:s*(o.mod-r-1),y:0,width:s*(r-t+1),height:o.vspace/2}]),void 0!==e.attr&&l.push(function(n,e,a,t,r){var o=a*(e.mod-(r+t)/2-1);return Array.isArray(n.attr)?n.attr.reduce(function(e,t,r){return null==t?e:e.concat([p(t,o,16*r,a,n.bits)])},["g",{}]):p(n.attr,o,0,a,n.bits)}(e,o,s,t,r))}),["g",u,i,c,l]}function u(e,t){return["g",{transform:d(4.5,(t.lanes-t.index-1)*t.vspace+.5),"text-anchor":"middle","font-size":t.fontsize,"font-family":t.fontfamily||"sans-serif","font-weight":t.fontweight||"normal"},function(e,t){var r=t.hspace,n=t.vspace,a=t.mod,o=["g",{transform:d(0,n/4),stroke:"black","stroke-width":1,"stroke-linecap":"round"}];o.push(c(r)),o.push(l(n/2)),o.push(c(r,0,n/2));for(var s=t.index*t.mod,i=t.mod;i===t.mod||e.some(function(e){return e.lsb===s})?o.push(l(n/2,i*(r/a))):(o.push(l(n/16,i*(r/a))),o.push(l(n/16,i*(r/a),7*n/16))),s++,--i;);return o}(e,t),n(e,t)]}t.exports=function(e,t){(t="object"==typeof t?t:{}).vspace=i(t.vspace,19,80),t.hspace=i(t.hspace,39,800),t.lanes=i(t.lanes,0,1),t.bits=i(t.bits,4,32),t.fontsize=i(t.fontsize,5,14),t.bigendian=t.bigendian||!1;var r,n=16*e.reduce(function(e,t){return Math.max(e,Array.isArray(t.attr)?t.attr.length:0)},0),a=function(e,t){return["svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:t,viewBox:[0,0,e,t].join(" ")}]}(t.hspace+9,(t.vspace+n)*t.lanes+5),o=0,s=t.bits/t.lanes;for(t.mod=0|s,e.forEach(function(e){e.lsb=o,e.lsbm=o%s,o+=e.bits,e.msb=o-1,e.msbm=e.msb%s}),r=0;r");a+=">"}switch(typeof t){case"string":case"number":case"boolean":return void(o+=t+i)}s=!1,o+=n(t)})?a+"/>"+i:s?a+function(e){var t=e.split("\n"),r=[];return t.forEach(function(e){""!==e.trim()&&r.push(e)}),r.join("\n")}(o)+""+i:a+i+r(o)+""+i}(e)}},{}],37:[function(e,t,r){"use strict";var n=e("./parse"),a=e("./reparse");r.parse=n,r.reparse=a},{"./parse":38,"./reparse":39}],38:[function(e,t,r){"use strict";var s=/||||||||<\/o>|<\/ins>|<\/s>|<\/sub>|<\/sup>|<\/b>|<\/i>|<\/tt>/;function i(r,e){e.add&&e.add.split(";").forEach(function(e){var t=e.split(" ");r[t[0]][t[1]]=!0}),e.del&&e.del.split(";").forEach(function(e){var t=e.split(" ");delete r[t[0]][t[1]]})}var c={"":{add:"text-decoration overline"},"":{del:"text-decoration overline"},"":{add:"text-decoration underline"},"":{del:"text-decoration underline"},"":{add:"text-decoration line-through"},"":{del:"text-decoration line-through"},"":{add:"font-weight bold"},"":{del:"font-weight bold"},"":{add:"font-style italic"},"":{del:"font-style italic"},"":{add:"baseline-shift sub;font-size .7em"},"":{del:"baseline-shift sub;font-size .7em"},"":{add:"baseline-shift super;font-size .7em"},"":{del:"baseline-shift super;font-size .7em"},"":{add:"font-family monospace"},"":{del:"font-family monospace"}};function l(n){return Object.keys(n).reduce(function(e,t){var r=Object.keys(n[t]);return 0 + + + Procedure + + + + +
    +

    Procedure

    + +
    +
    + +

    Components which will be used for this:PMOS, NMOS, Clock, Delay, Input, Output.


    + Steps: +
      +
    1. Select positive level pass transistor from the list on the top of the page.
    2. +
    3. Connect source of PMOS with drain of NMOS and connect input pin serially to it.
    4. +
    5. Connect drain of PMOS with source of NMOS and connect output pin serially to it.
    6. +
    7. Connect clock to the delay and connect that to gate of PMOS (clock bar).
    8. +
    9. Connect clock to gate of NMOS (clock).
    10. +
    11. Press the simulate button and observe the graph.
    12. +
    +
    +
    + +

    Components which will be used for this:PMOS, NMOS, Clock, Delay, Input, Output.


    + Steps: +
      +
    1. Select negative level pass transistor from the list on the top of the page.
    2. +
    3. Connect source of PMOS with drain of NMOS and connect input pin serially to it.
    4. +
    5. Connect drain of PMOS with source of NMOS and connect output pin serially to it.
    6. +
    7. Connect clock to gate of PMOS (clock).
    8. +
    9. Connect clock to the delay and connect that to gate of NMOS (clock bar).
    10. +
    11. Press the simulate button and observe the graph.
    12. +
    +
    +
    +

    Components which will be used for this:Pass transistor, Clock, Delay, Input, Output, OR gate.


    + Steps: +
      +
    1. Select multiplexer from the list on the top of the page.
    2. +
    3. Place two pass transistors on the workspace.
    4. +
    5. Connect clock to delay (clock bar) and connect it to gate of NMOS (NGate) of 1st pass transistor and gate of PMOS (PGate) of 2nd pass transistor.
    6. +
    7. Connect an Input pin to each transistor's input.
    8. +
    9. Connect clock to gate of PMOS of first transistor and gate of NMOS of 2nd transistor.
    10. +
    11. Connect the outputs of the two transistors to an OR gate.
    12. +
    13. Connect the output of the OR gate to an output pin.
    14. + +
    +
    + + + \ No newline at end of file diff --git a/project2/Codes/Readme.txt b/project2/Codes/Readme.txt new file mode 100644 index 00000000..8b26765c --- /dev/null +++ b/project2/Codes/Readme.txt @@ -0,0 +1,21 @@ +SRIP + +VLSI | issue no 381 | Design of Pass transistor and Multiplexer + +--------------------------------------------------------------------- + +Simulator: +The simulator can be accessed by clicking on the simLayout.html file. +Test cases can be seen in the Test_Cases folder. +The Project documentation is in the project_doc.html file. + +Files used by the simulator: +simLayout.html +Procedure.html +layout.css +simulatorOptions.js +circuitCheck.js + +--------------------------------------------------------------------- + + diff --git a/project2/Codes/Test_Cases/testcases-Simulator.txt b/project2/Codes/Test_Cases/testcases-Simulator.txt new file mode 100644 index 00000000..2e193fa1 --- /dev/null +++ b/project2/Codes/Test_Cases/testcases-Simulator.txt @@ -0,0 +1,14 @@ +1. Circuit used to disappear when you change simulations: +fixed + +2.Press Simulate button without selecting what type of simulation: +fixed + +3.Press Simulate button with mismatch circuit and simulation option: +fixed + +4.Circuit Check +fixed + +5. Graph was still showing if a previous simulation was made and not getting cleared. +fixed diff --git a/project2/Codes/circuitCheck.js b/project2/Codes/circuitCheck.js new file mode 100644 index 00000000..8bea0077 --- /dev/null +++ b/project2/Codes/circuitCheck.js @@ -0,0 +1,184 @@ +function circCheck() +{ + //console.log(JSON.stringify(dataFinal.devices)); + //console.log(JSON.stringify(dataFinal.connectors)); + /*global dataFinal*/ + var dev = dataFinal.devices; + /*global dataFinal*/ + var con = dataFinal.connectors; + //console.log(dev.length); + //console.log(con.length); + //console.log(document.getElementById("whichSim").value); + var opt = document.getElementById("whichSim").value; + var devic = new Object(); + var connec = new Object(); + connec = {}; + devic = {}; + //Main parsing done here: + for(var i = 0;i + + + Documentation + + + +

    Schematic Design Of Pass Transistor Logic & Multiplexer.

    + +

    Introduction

    + +

    + Transmission gates are used in digital circuits to pass or block particular signal from the components. In
    transmission gates, NMOS and PMOS are parallel connected to each other. Schematic representation of transmission +
    gate and its circuit symbol are shown below.
    +
    + In the transmission gates the input to the gate acts as the controlling input and depending on the value of
    control variable, the input at the source end of transistor appears at the drain end or in other words the
    control variable controls a transmission gate to which pass variables are applied. In figure shown above A
    + is the control signal. When control signal (signal A) is high then transmission gate passes signal from input to
    output. NMOS passes good zero and PMOS passes good one, putting NMOS and PMOS in parallel produces a
    transmission gate that passes both logic levels good.

    + Pass transistor logic is an efficient alternative to Complementary CMOS logic design because of following reasons:
    + +

  • Decreased node capacitance.
  • +
  • Reduced transistor count required to implement a logic function.
  • +
  • Due to the low voltage swing pass transistors require lower switching energy to charge up the node.
  • +
  • Better speed.
  • +
  • Low power design.
  • +
  • No static power consumption.
  • + +
    Applications of Transmission Gate:
    + +
  • Transmission gates are typically used as building blocks for logic circuitry, such as a D Latch or D Flip-Flop.
  • +
  • Transmission gates are basic building block for multiplexer.
  • +
  • Transmission gates can be used for blocking particular component from live signal.
  • +
    +

    +

    Multiplexer

    +

    + Multiplexer or MUX, which is also known as data selector, is a combinational circuit with multiple input and
    single output. At a time a single input is selected and given as output based on select signal.
    + + A multiplexer selects binary information present on any one on the input line, depending upon logic status of
    the selection inputs and routes to the output line. If there are n selection line then number of possible
    routes input lines is 2^n and then multiplexer is referred as a 2^n x 1 multiplexer.

    +

    + +

    Pass transistor logic through NMOS

    +

    + As we already know NMOS permits flow of current from source to drain when the input to the gate is 1
    + therefore when control variable is equal to 1 the input at the source end appears on the drain.

    + +

    +

    Pass transistor logic through PMOS

    +

    + As we already know PMOS permits flow of current from source to drain when the input to the gate is 0
    + therefore when control variable is equal to 0 the input at the source end appears on the drain.

    + +

    +

    Multiplexer

    +

    + The multiplexer selects one of many analog or digital input. A multiplexer with 2n input lines have n select
    lines. The select lines can either be 0 or 1. Depending on the binary number(formed by combination of 1s and 0s)
    at the select lines. One of the input is selected and it is passed on to the output.
    + The block diagram and truth table of the 2 input multiplexer is given below:
    + +
    + The logical expression for output can be AS'+BS . If we implement this logic using nands and nors then no. of
    transistor required would be 5.We can use the knowledge of pass transistors,control variables an pass variables.
    +

    + + + + \ No newline at end of file diff --git a/project2/Codes/project_doc_style.css b/project2/Codes/project_doc_style.css new file mode 100644 index 00000000..945bf096 --- /dev/null +++ b/project2/Codes/project_doc_style.css @@ -0,0 +1,23 @@ +body { + text-align: center; + background-color: cornsilk; +} + +p { + font-family: sans-serif; +} + +h1 { + font-size: 3.5em; + background-color: burlywood; +} + +h2 { + background-color: wheat; + font-size: 2em; +} + +h3 { + background-color: blanchedalmond; + font-family: monospace; +} \ No newline at end of file diff --git a/project2/Codes/simLayout.html b/project2/Codes/simLayout.html new file mode 100644 index 00000000..84fda468 --- /dev/null +++ b/project2/Codes/simLayout.html @@ -0,0 +1,130 @@ + + + + + + Simulator + + + + + + + + + + + + + + + +
    +

    Simulator

    +

    + +

    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/project2/Codes/simulatorOptions.js b/project2/Codes/simulatorOptions.js new file mode 100644 index 00000000..64dc6c37 --- /dev/null +++ b/project2/Codes/simulatorOptions.js @@ -0,0 +1,154 @@ +if(sessionStorage.getItem("MUX")) +{ + var val = sessionStorage.getItem("MUX"); + var opti = $("#whichSim option[value=\'" + val + "\']").text(); + $("#whichSim").append(""); +} +if(sessionStorage.getItem("PPT")) +{ + var dfl = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"} + ], + "devices":[ + {"type":"Delay","delay":1000,"id":"dev0","x":168,"y":128,"label":"Delay","state":{"direction":0}}, + {"type":"PMOS","id":"dev1","x":184,"y":248,"label":"PMOS"}, + {"type":"OSC","freq":0.5,"label":"CLK'","id":"dev2","x":104,"y":120}, + {"type":"In","id":"dev3","x":232,"y":328,"label":"In"}, + {"type":"Out","id":"dev4","x":328,"y":328,"label":"Out"}, + {"type":"NMOS","id":"dev5","x":384,"y":248,"label":"NMOS"}, + {"type":"OSC","freq":0.5,"label":"CLK","id":"dev6","x":352,"y":120} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev1.in1","to":"dev3.out0"}, + {"from":"dev3.in0","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev5.in1","to":"dev4.out0"} + ] +}; + var html1=JSON.stringify(dfl); + document.querySelector(".simcir").innerHTML=html1; +} +else if(sessionStorage.getItem("NPT")) +{ + var dfli = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":160,"y":256,"label":"PMOS"}, + {"type":"NMOS","id":"dev1","x":400,"y":256,"label":"NMOS"}, + {"type":"OSC","freq":0.5,"label":"CLK'","id":"dev2","x":320,"y":128}, + {"type":"In","id":"dev3","x":208,"y":336,"label":"In"}, + {"type":"Out","id":"dev4","x":352,"y":336,"label":"Out"}, + {"type":"OSC","freq":0.5,"label":"CLK","id":"dev5","x":128,"y":128}, + {"type":"Delay","delay":1000,"id":"dev6","x":384,"y":136,"label":"Delay","state":{"direction":0}} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev5.out0"}, + {"from":"dev0.in1","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev6.out0"}, + {"from":"dev1.in1","to":"dev4.out0"}, + {"from":"dev3.in0","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev0.out0"}, + {"from":"dev6.in0","to":"dev2.out0"} + ] +}; + var html2=JSON.stringify(dfli); + document.querySelector(".simcir").innerHTML=html2; + +} +else +{ + var obj = {}; + if(sessionStorage.getItem("MUX")==="3") + { + obj = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"}, + {"type":"OR"}, + {"type":"PassTransistor"} + ] + + }; + + } + else + { + obj = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"} + ] + + }; + } + var html=JSON.stringify(obj); + document.querySelector(".simcir").innerHTML=html; +} + +$("#procedure").click(function() { + $("#proc").toggle(); +}); + +$("#dfli").click(function(event) { + sessionStorage.setItem("PPT",1); + sessionStorage.removeItem("NPT"); + location.reload(); +}); + +$("#dfl").click(function(event) { + sessionStorage.setItem("NPT",1); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#clear").click(function(event) { + sessionStorage.removeItem("NPT"); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#whichSim").change(function(event) { + var opt = document.getElementById("whichSim").value; + sessionStorage.setItem("MUX",opt); + location.reload(); +}); \ No newline at end of file diff --git a/project2/Experiment_Project_Documentation.md b/project2/Experiment_Project_Documentation.md new file mode 100644 index 00000000..78728f2b --- /dev/null +++ b/project2/Experiment_Project_Documentation.md @@ -0,0 +1,71 @@ +# Experiment Project Documentation + +## Introduction + +This document captures the technical details related to the experiment development. + +## Project +**Domain name:** Computer Science & Engineering. +**Lab name:** Very Large Scale Integration. +**Experiment name:** Schematic Design Of Pass Transistor Logic & Multiplexer. + +Pass transistor logic (PTL) describes several logic families used in the design of integrated circuits. It reduces the count of transistors used to make different logic gates, by eliminating redundant transistors. Transistors are used as switches to pass logic levels between nodes of a circuit, instead of as switches connected directly to supply voltages. + +This reduces the number of active devices, but has the disadvantage that the difference of the voltage between high and low logic levels decreases at each stage. Each transistor in series is less saturated at its output than at its input. + +This experiment is used to simulate the working of a Pass transistor on different levels and a multiplexer. A graph can be observed with the simulation itself. + +## Purpose of the Project + +The purpose of this project is to convert Pass transistor logic and multiplexer simulation from Java to Javascript. + +## Project Developers Details + +| Sl.no | Name | Year Of Study | Role | Email-ID | Github handle | +|:-----:|:-----------------:|:-------------:|:---------:|:---------------------------:|:-------------:| +| 1 | Utkarsh Chhapekar | 2nd year | Developer | utkarshchhapekar2@gmail.com | Utkichaps | + +## Technologies and Libraries + +**Technologies:** +1. HTML +2. CSS +3. Javascript + +**Libraries:** +1. SimCir JS +2. JQuery +3. Bootstrap + +## Development Environment + +**OS:** Ubuntu 18.04 + +## Documents and Files: + +| Sl.no | Document | Role | +|:-----:|:------------------:|:------------------------------------------------------------------------------:| +| 1. | Procedure | This document captures the instructions to run the simulations | +| 2. | Test Cases | This document captures the functional test cases of the experiment simulation | +| 3. | Code Documentation | This document captures the details related to code | +| Sl.no | File | Role | +| 1. | Codes | Contains the major code as well as the images related to it. | +| 2. | Libraries | Contains libraries used by the code | + +## Process Followed to convert the experiment + +1. Understand the assigned experiment Java simulation. +2. Understanding the experiment concept. +3. Re-implement the same in javascript. + +## Value Added by our Project + +It is beneficial to engineering students who want to understand the inner working of the pass transistors and multiplexers and understand the output graphs seen by them. + +## Risks and Challenges + +A few challenges faced during the development process was understanding the simcir library so that it can be used to retrieve the circuit data dynamically. The circuit checking functionality also took some time to implement. + +## Issues + +No current issues open. diff --git a/project2/Experiment_Test_Cases_Documentation.md b/project2/Experiment_Test_Cases_Documentation.md new file mode 100644 index 00000000..2b4b3643 --- /dev/null +++ b/project2/Experiment_Test_Cases_Documentation.md @@ -0,0 +1,21 @@ +# Experiment Test Cases Documentation + +## Introduction + +This document captures the test cases of the experiment. + +## Functional Test Cases + +| Test Case id | Test Scenario | Test Steps | Expected Output | Actual Output | Result | +|:------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------:| +| 1. | Press Simulate button without selecting what type of simulation | Directly click on simulate without selecting the type of simulation. | Alert: Please select type of simulation | Alert: Please select type of simulation | pass | +| 2. | Press Simulate button with mismatched circuit and simulation option. | Choose a simulation and make a circuit which is not the same as the simulation option. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | +| 3. | Alert when the connections/components are wrong. | Make an incorrect circuit and try to simulate it. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | + +## Cross Browser Testing + +| Sl.no | Browser | Version | Works? | +|-------|-----------------|---------------|--------| +| 1. | Google Chrome | 75.0.3770.100 | Yes | +| 2. | Mozilla Firefox | 67.0.4 | yes | + diff --git a/project2/Libraries/Bootstrap/bootstrap.bundle.min.js b/project2/Libraries/Bootstrap/bootstrap.bundle.min.js new file mode 100644 index 00000000..43203684 --- /dev/null +++ b/project2/Libraries/Bootstrap/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),h=0l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)r(o.top)||"bottom"===_&&r(i.top)r(g.right),c=r(i.top)r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:''}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||tcode{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/project2/Libraries/Readme.txt b/project2/Libraries/Readme.txt new file mode 100644 index 00000000..964c4cb9 --- /dev/null +++ b/project2/Libraries/Readme.txt @@ -0,0 +1,5 @@ +Libraries used: + +Jquery +SimCir JS +Bootstrap diff --git a/project2/Libraries/jquery-3.4.1.min.js b/project2/Libraries/jquery-3.4.1.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/project2/Libraries/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + simcirjs + + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/project2/Libraries/simcirjs/LICENSE b/project2/Libraries/simcirjs/LICENSE new file mode 100644 index 00000000..fba3333e --- /dev/null +++ b/project2/Libraries/simcirjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 Kazuhiko Arase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/project2/Libraries/simcirjs/README.txt b/project2/Libraries/simcirjs/README.txt new file mode 100644 index 00000000..ce11a166 --- /dev/null +++ b/project2/Libraries/simcirjs/README.txt @@ -0,0 +1,9 @@ +SimcirJS + +Copyright (c) 2014 Kazuhiko Arase + +URL: http://www.d-project.com/ + +Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + diff --git a/project2/Libraries/simcirjs/misc/simcir-altfulladder.js b/project2/Libraries/simcirjs/misc/simcir-altfulladder.js new file mode 100644 index 00000000..1cb8d588 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir-altfulladder.js @@ -0,0 +1,57 @@ +// +// SimcirJS - altfulladder +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// This file describes how to customize the layout of library. +// + +// includes following device types: +// AltFullAdder + +simcir.registerDevice('AltFullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "layout":{"rows":8,"cols":8,"hideLabelOnWorkspace":true, + "nodes":{"A":"T2","B":"T6","S":"B4","Cin":"R4","Cout":"L4"}}, + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); diff --git a/project2/Libraries/simcirjs/misc/simcir-delay.js b/project2/Libraries/simcirjs/misc/simcir-delay.js new file mode 100644 index 00000000..02747e33 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir-delay.js @@ -0,0 +1,224 @@ +// +// SimcirJS - Delay +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Delay + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1, delay) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + var value = in1.getValue(); + window.setTimeout(function() { out1.setValue(value); }, delay); + } + }; + }; + + var createDelayFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var defaultDelay = 50; + var defaultDelayColor = '#ff0000'; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var delay = Math.max(0, device.deviceDef.delay || defaultDelay); + var color = device.deviceDef.color || defaultDelayColor; + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1, delay); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector').css('stroke', color); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + labelless: true, + params: [ + {name: 'delay', type: 'number', + defaultValue: defaultDelay, + description: 'time delay in milli-seconds.'}, + {name: 'color', type: 'string', + defaultValue: defaultDelayColor, + description: 'color in hexadecimal.'}], + code: '{"type":"' + device.deviceDef.type + '","delay":50}' + }; + }; + }; + }; + + $s.registerDevice('Delay', createDelayFactory() ); + +}(simcir); diff --git a/project2/Libraries/simcirjs/misc/simcir-dso.js b/project2/Libraries/simcirjs/misc/simcir-dso.js new file mode 100644 index 00000000..97b1d0f0 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir-dso.js @@ -0,0 +1,406 @@ +// +// SimcirJS - DSO +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DSO + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createDSOFactory = function() { + + var colors = [ + '#ff00cc', + '#ffcc00', + '#ccff00', + '#00ffcc', + '#00ccff', + '#cc00ff' + ]; + var timeRanges = [10000, 5000, 2000, 1000]; + var maxTimeRange = timeRanges[0]; + + var createProbe = function(color) { + + var samples = []; + + var model = { + valueRange : 1, + timeRange : maxTimeRange + }; + + var $path = $s.createSVGElement('path'). + css('fill', 'none'). + css('stroke-width', 1). + css('stroke-linejoin', 'bevel'). + css('stroke', color); + + var setValueRange = function(valueRange) { + model.valueRange = valueRange; + }; + + var setTimeRange = function(timeRange) { + model.timeRange = timeRange; + }; + + var update = function(ts, x, y, width, height) { + var d = ''; + for (var i = samples.length - 1; i >= 0; i -= 1) { + var last = i - 1 >= 0 && ts - samples[i - 1].ts > model.timeRange; + var val = samples[i].value; + if (!last && i > 0 && i + 1 < samples.length && + samples[i - 1].value === val && + samples[i + 1].value === val) { + continue; + } + if (typeof val != 'number') { + val = 0; + } + var sx = x + width - (ts - samples[i].ts) / model.timeRange * width; + var sy = y + height - val / model.valueRange * height; + d += d == ''? 'M' : 'L'; + d += sx + ' ' + sy; + if (last) { + break; + } + } + $path.attr('d', d); + }; + + var sample = function(ts, value) { + samples.push({ts: ts, value: value}); + while (ts - samples[0].ts > maxTimeRange) { + samples.shift(); + } + }; + + return { + $ui : $path, + setValueRange : setValueRange, + setTimeRange : setTimeRange, + update : update, + sample : sample + }; + }; + + var createPanel = function() { + + var $lcd = $s.createSVGElement('path'). + css('stroke', 'none').css('fill', '#ffcc00'); + var setLCDText = function(text) { + $lcd.attr('d', createFontPath(text, 4, 4, 1) ); + }; + var $lcdPanel = $s.createSVGElement('g'). + append($s.createSVGElement('rect'). + css('stroke', 'none'). + css('fill', '#000000'). + //size of time range window + attr({x : 0, y : 0, width: unit * 7, height : unit}) ). + append($lcd). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('timeRangeDown'); + }); + $s.transform($lcdPanel, unit * 1.5, 0); + + var $playing = $s.createSVGElement('path'). + attr('d', 'M' + unit / 4 + ' ' + unit / 4 + + 'L' + unit / 4 * 3 + ' ' + unit / 2 + + 'L' + unit / 4 + ' ' + unit / 4 * 3 + 'Z'). + css('stroke-width', 1); + var btnAttr = {x : 0, y : 0, width : unit, height : unit, + rx : 1, ry : 1}; + var $btnRect = $s.createSVGElement('rect'). + attr(btnAttr). + css('stroke', 'none'). + css('fill', '#999999'). + css('opacity', 0); + var $btn = $s.createSVGElement('g'). + append($btnRect). + append($s.createSVGElement('rect'). + attr(btnAttr). + css('stroke-width', 1). + css('stroke', '#666666'). + css('fill', 'none') ). + append($playing). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('playDown'); + }); + + var $panel = $s.createSVGElement('g'). + append($btn).append($lcdPanel); + + return { + $ui : $panel, + setPlaying : function(playing) { + $playing.css('fill', playing? '#00ff00' : '#006600'). + css('stroke', playing? '#00cc00' : '#003300'); + }, + setTimeRange : function(timeRange) { + var unit = 'ms'; + if (timeRange > 5000) { + unit = 's'; + timeRange /= 1000; + } + setLCDText('TimeRange:' + timeRange + unit); + } + }; + }; + + return function(device) { + + var numInputs = Math.max(1, + device.deviceDef.numInputs || 4); + var scale = 1; + var gap = 2; + + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + + var state = device.deviceDef.state || + { playing : true, rangeIndex : 0 }; + device.getState = function() { + return state; + }; + + //external body size + device.getSize = function() { + return { width : unit * 4, + height : unit * (numInputs * scale + 2) }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + //position of display + var $display = $s.createSVGElement('g'); + device.$ui.append($display); + $s.transform($display, unit / 2, unit / 2); + + //Inner LCD size + var $rect = $s.createSVGElement('rect'). + css('stroke', 'none').css('fill', '#000000'). + attr({x: 0, y: 0, width: unit * 3, + height: unit * numInputs * scale }); + $display.append($rect); + + var probes = []; + for (var i = 0; i < device.getInputs().length; i += 1) { + var inNode = device.getInputs()[i]; + $s.transform(inNode.$ui, 0, unit * + (0.5 + 0.5 * scale + i * scale) ); + var probe = createProbe(colors[i % colors.length]); + probes.push(probe); + $display.append(probe.$ui); + } + + var setTimeRange = function(timeRange) { + panel.setTimeRange(timeRange); + for (var i = 0; i < probes.length; i += 1) { + probes[i].setTimeRange(timeRange); + } + }; + + var panel = createPanel(); + panel.$ui.on('playDown', function(event){ + state.playing = !state.playing; + panel.setPlaying(state.playing); + }).on('timeRangeDown', function(event) { + state.rangeIndex = (state.rangeIndex + 1) % timeRanges.length; + setTimeRange(timeRanges[state.rangeIndex]); + }); + device.$ui.append(panel.$ui.css('display', 'none') ); + $s.transform(panel.$ui, unit / 2, + unit * numInputs * scale + unit / 4 * 3); + + panel.setPlaying(state.playing); + setTimeRange(timeRanges[state.rangeIndex] || timeRanges[0]); + + var alive = false; + var render = function(ts) { + for (var i = 0; i < device.getInputs().length; i += 1) { + probes[i].sample(ts, device.getInputs()[i].getValue() ); + if (state.playing) { + probes[i].update(ts, 0, unit * i * scale + gap, + unit * 15, unit * scale - gap * 2); + } + } + if (alive) { + window.requestAnimationFrame(render); + } + }; + + device.$ui.on('deviceAdd', function() { + + device.$ui.children('.simcir-device-body'). + attr('width', unit * 16); + device.$ui.children('.simcir-device-label'). + attr('x', unit * 8); + $rect.attr('width', unit * 15); + panel.$ui.css('display', ''); + + alive = true; + window.requestAnimationFrame(render); + + }).on('deviceRemove', function() { + alive = false; + }); + + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 4, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":4}' + }; + }; + }; + }; + + var createFontPath = function() { + var data = { + "\u0020":[0,0,0,0,0,0,0], + "!":[4,4,4,4,0,0,4], + "\"":[10,10,10,0,0,0,0], + "#":[10,10,31,10,31,10,10], + "$":[4,30,5,14,20,15,4], + "%":[3,19,8,4,2,25,24], + "&":[6,9,5,2,21,9,22], + "'":[6,4,2,0,0,0,0], + "(":[8,4,2,2,2,4,8], + ")":[2,4,8,8,8,4,2], + "*":[0,4,21,14,21,4,0], + "+":[0,4,4,31,4,4,0], + ",":[0,0,0,0,6,4,2], + "-":[0,0,0,31,0,0,0], + ".":[0,0,0,0,0,6,6], + "/":[0,16,8,4,2,1,0], + "0":[14,17,25,21,19,17,14], + "1":[4,6,4,4,4,4,14], + "2":[14,17,16,8,4,2,31], + "3":[31,8,4,8,16,17,14], + "4":[8,12,10,9,31,8,8], + "5":[31,1,15,16,16,17,14], + "6":[12,2,1,15,17,17,14], + "7":[31,16,8,4,2,2,2], + "8":[14,17,17,14,17,17,14], + "9":[14,17,17,30,16,8,6], + ":":[0,6,6,0,6,6,0], + ";":[0,6,6,0,6,4,2], + "<":[8,4,2,1,2,4,8], + "=":[0,0,31,0,31,0,0], + ">":[2,4,8,16,8,4,2], + "?":[14,17,16,8,4,0,4], + "@":[14,17,16,18,21,21,14], + "A":[14,17,17,17,31,17,17], + "B":[15,17,17,15,17,17,15], + "C":[14,17,1,1,1,17,14], + "D":[7,9,17,17,17,9,7], + "E":[31,1,1,15,1,1,31], + "F":[31,1,1,15,1,1,1], + "G":[14,17,1,29,17,17,14], + "H":[17,17,17,31,17,17,17], + "I":[14,4,4,4,4,4,14], + "J":[28,8,8,8,8,9,6], + "K":[17,9,5,3,5,9,17], + "L":[1,1,1,1,1,1,31], + "M":[17,27,21,21,17,17,17], + "N":[17,17,19,21,25,17,17], + "O":[14,17,17,17,17,17,14], + "P":[15,17,17,15,1,1,1], + "Q":[14,17,17,17,21,9,22], + "R":[15,17,17,15,5,9,17], + "S":[30,1,1,14,16,16,15], + "T":[31,4,4,4,4,4,4], + "U":[17,17,17,17,17,17,14], + "V":[17,17,17,17,17,10,4], + "W":[17,17,17,21,21,21,10], + "X":[17,17,10,4,10,17,17], + "Y":[17,17,17,10,4,4,4], + "Z":[31,16,8,4,2,1,31], + "[":[14,2,2,2,2,2,14], + "\\":[0,1,2,4,8,16,0], + "]":[14,8,8,8,8,8,14], + "^":[4,10,17,0,0,0,0], + "_":[0,0,0,0,0,0,31], + "`":[2,4,8,0,0,0,0], + "a":[0,0,14,16,30,17,30], + "b":[1,1,1,15,17,17,15], + "c":[0,0,30,1,1,1,30], + "d":[16,16,16,30,17,17,30], + "e":[0,0,14,17,31,1,30], + "f":[8,20,4,14,4,4,4], + "g":[0,0,30,17,30,16,15], + "h":[1,1,1,15,17,17,17], + "i":[0,4,0,4,4,4,4], + "j":[8,0,8,8,8,9,6], + "k":[2,2,18,10,6,10,18], + "l":[6,4,4,4,4,4,14], + "m":[0,0,27,21,21,21,17], + "n":[0,0,13,19,17,17,17], + "o":[0,0,14,17,17,17,14], + "p":[0,0,15,17,15,1,1], + "q":[0,0,30,17,30,16,16], + "r":[0,0,13,19,1,1,1], + "s":[0,0,30,1,14,16,15], + "t":[4,4,31,4,4,20,8], + "u":[0,0,17,17,17,17,14], + "v":[0,0,17,17,17,10,4], + "w":[0,0,17,17,21,21,10], + "x":[0,0,17,10,4,10,17], + "y":[0,0,17,10,4,4,2], + "z":[0,0,31,8,4,2,31], + "{":[12,2,2,1,2,2,12], + "|":[4,4,4,4,4,4,4], + "}":[6,8,8,16,8,8,6], + "~":[16,14,1,0,0,0,0] + }; + var getCharPath = function(c, x, y, s) { + var d = ''; + var cdata = data[c] || data['?']; + for (var cy = 0; cy < cdata.length; cy += 1) { + for (var cx = 0; cx < 5; cx += 1) { + if ( (cdata[cy] >> cx) & 1) { + d += 'M' + (x + cx) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy + 1) * s; + d += 'L' + (x + cx) * s + ' ' + (y + cy + 1) * s; + d += 'Z'; + } + } + } + return d; + }; + return function(s, x, y, scale) { + scale = scale || 1; + var d = ''; + for (var i = 0; i < s.length; i += 1) { + d += getCharPath(s.charAt(i), x + i * 6, y, scale); + } + return d; + }; + }(); + + $s.registerDevice('DSO', createDSOFactory() ); + +}(simcir); diff --git a/project2/Libraries/simcirjs/misc/simcir-num.js b/project2/Libraries/simcirjs/misc/simcir-num.js new file mode 100644 index 00000000..7b0f08f1 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir-num.js @@ -0,0 +1,328 @@ +// +// SimcirJS - Num +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// NumSrc +// NumDsp + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createNumLabel = function(size) { + var $label = $s.createSVGElement('g'). + css('pointer-events', 'none'). + attr('fill', 'none'). + attr('stroke-width', '2'); + $s.transform($label, size.width / 2, size.height / 2); + var lsize = Math.max(size.width, size.height); + var ratio = 0.65; + $s.controller($label, { + setOn : function(on) { + $label.children().remove(); + if (on) { + var w = lsize / 2 * ratio * 0.5; + var x = w * 0.2; + $label.append($s.createSVGElement('path'). + attr('d', + 'M' + x + ' ' + (lsize / 2 * ratio) + + 'L ' + x + ' ' + -lsize / 2 * ratio + + 'Q' + (x - lsize / 2 * ratio * 0.125) + + ' ' + (-lsize / 2 * ratio * 0.6) + + ' ' + (x - w) + + ' ' + (-lsize / 2 * ratio * 0.5) ). + attr('stroke-linecap' , 'square'). + attr('stroke-linejoin' , 'round') ); + } else { + $label.append($s.createSVGElement('ellipse'). + attr({ cx : 0, cy : 0, + rx : lsize / 2 * ratio * 0.6, ry : lsize / 2 * ratio}). + attr('fill', 'none') ); + } + }, + setColor : function(color) { + $label.attr('stroke', color); + } + }); + return $label; + }; + + var createNumFactory = function(type) { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = type == 'dsp'? device.addInput() : null; + var out1 = type == 'src'? device.addOutput() : null; + + var on = false; + var updateOutput = null; + + var direction = null; + if (device.deviceDef.state) { + direction = device.deviceDef.state.direction; + } + if (typeof direction != 'number') { + direction = type == 'src'? Direction.WE : Direction.EW; + } + + if (type == 'src') { + if (device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return { direction : direction, on : on }; + }; + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + updateOutput = function() { + out1.setValue(on? 1 : null); + }; + updateOutput(); + } else if (type == 'dsp') { + device.getState = function() { + return { direction : direction }; + }; + } + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + var size = device.getSize(); + + device.$ui.css('fill', '#eeeeee'); + + var $button = null; + if (type == 'src') { + $button = $s.createSVGElement('rect'). + attr({x: 1, y: 1, width: size.width - 2, height: size.height - 2, + rx: 2, ry: 2, stroke: 'none', fill: '#cccccc'}). + append($s.createSVGElement('title') ); + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + on = !on; + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + }; + var button_mouseUpHandler = function(event) { + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + $button.on('dblclick', button_dblClickHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + $button.off('dblclick', button_dblClickHandler); + }); + var out1_setValue = out1.setValue; + out1.setValue = function(value) { + out1_setValue(value); + $s.controller($numLabel).setOn(out1.getValue() != null); + }; + } + + var $numLabel = createNumLabel(size); + $s.controller($numLabel).setColor('#000000'); + device.$ui.append($numLabel); + + if (type == 'src') { + $s.controller($numLabel).setOn(out1.getValue() != null); + } else if (type == 'dsp') { + $s.controller($numLabel).setOn(false); + device.$ui.on('inputValueChange', function() { + $s.controller($numLabel).setOn(in1.getValue() != null); + }); + } + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + if (type == 'src') { + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr('cx', size.width).attr('cy', size.height / 2).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + } + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + if (direction == Direction.WE) { + x0 += d; + x1 += unit; + } else if (direction == Direction.NS) { + y0 += d * 1.25; + y1 += unit; + } else if (direction == Direction.EW) { + x0 -= d; + x1 -= unit; + } else if (direction == Direction.SN) { + y0 -= d * 1.25; + y1 -= unit; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + if (type == 'src') { + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + } else if (type == 'dsp') { + $s.transform(in1.$ui, x1, y1); + } + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: -unit / 2, y: 0, width: unit * 2, height: unit}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: -unit / 2, width: unit, height: unit * 2}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + if (type == 'src') { + $button.css('opacity', opacity); + $point.css('opacity', 1 - opacity); + } + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + direction = (direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + $s.registerDevice('NumSrc', createNumFactory('src') ); + $s.registerDevice('NumDsp', createNumFactory('dsp') ); + +}(simcir); diff --git a/project2/Libraries/simcirjs/misc/simcir-transmitter.js b/project2/Libraries/simcirjs/misc/simcir-transmitter.js new file mode 100644 index 00000000..c9a08c30 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir-transmitter.js @@ -0,0 +1,325 @@ +// +// SimcirJS - Transmitter +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Transmitter + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createTransmitterFactory = function() { + + var emptyGroup = { + getValue : function() { return null; }, + setValue : function(value, force) {}, + getInput : function() { return null; }, + setInput : function(device) {} + }; + + var createGroup = function(devices) { + var input = function() { + for (var i = 0; i < devices.length; i += 1) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + return devices[i]; + } + } + return null; + }(); + return { + getValue : function() { + return input != null? input.getInputs()[0].getValue() : null; + }, + setValue : function(value, force) { + for (var i = 0; i < devices.length; i += 1) { + devices[i].getOutputs()[0].setValue(value, force); + } + }, + getInput : function() { + return input; + }, + setInput : function(device) { + input = device; + for (var i = 0; i < devices.length; i += 1) { + if (devices[i] != device) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + } + } + } + }; + }; + + var createGroupByLabel = function(devices) { + var devicesByLabel = {}; + for (var id in devices) { + var device = devices[id]; + var label = device.getLabel(); + if (!devicesByLabel[label]) { + devicesByLabel[label] = []; + } + devicesByLabel[label].push(device); + } + var groupByLabel = {}; + for (var label in devicesByLabel) { + groupByLabel[label] = createGroup(devicesByLabel[label]); + } + return groupByLabel; + }; + + var createGroupManager = function() { + + var devices = {}; + var idCount = 0; + var groupCache = null; + + var register = function(device) { + var id = 'id' + idCount++; + if (device.headless) { + devices[id] = device; + reset(); + } else { + device.$ui.on('deviceAdd', function() { + devices[id] = device; + reset(); + }).on('deviceRemove', function() { + delete devices[id]; + reset(); + }); + } + }; + + var reset = function() { + groupCache = null; + }; + + var getGroupByLabel = function(label) { + if (!groupCache) { + groupCache = createGroupByLabel(devices); + } + return groupCache[label] || emptyGroup; + }; + + return { + register : register, + reset : reset, + getGroupByLabel : getGroupByLabel + }; + }; + + var maxFadeCount = 16; + var fadeTimeout = 100; + var getEmptyGroupByLabel = function(label) { return emptyGroup; }; + + return function(device) { + + var getGroupByLabel = getEmptyGroupByLabel; + if (device.scope) { + var groupManager = device.scope.transmitterGroupManager; + if (!groupManager) { + groupManager = createGroupManager(); + device.scope.transmitterGroupManager = groupManager; + } + groupManager.register(device); + getGroupByLabel = function(label) { + return groupManager.getGroupByLabel(label); + }; + } + + var in1 = device.addInput(); + var out1 = device.addOutput(); + var lastLabel = device.getLabel(); + + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + getGroupByLabel(device.getLabel() ).setValue(in1.getValue(), force); + } + }; + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + if (outNode != null) { + getGroupByLabel(device.getLabel() ).setInput(device); + } + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + + var $label = device.$ui.children('.simcir-device-label'); + var defaultLabelX = +$label.attr('x'); + var defaultLabelY = +$label.attr('y'); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr({cx: unit / 2, cy: unit / 2, r: 2}). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var updateUI = function() { + + var isInSet = in1.getOutput() != null; + var isOutSet = out1.getInputs().length > 0; + + var x0, y0, x1, y1, cx, cy; + x0 = y0 = x1 = y1 = cx = cy = unit / 2; + var d = unit / 2; + x0 -= d; + x1 += d; + if (isInSet && isOutSet) { + } else if (isInSet) { + cx += d; + } else if (isOutSet) { + cx -= d; + } + $point.attr('cx', cx).attr('cy', cy); + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + + var labelX = defaultLabelX; + var labelY = defaultLabelY; + var anchor = 'middle'; + if (isInSet && isOutSet) { + labelY -= unit / 4; + } else if (!isInSet && !isOutSet) { + labelY -= unit / 4; + } else if (isInSet) { + labelX += unit; + labelY -= unit; + anchor = 'start'; + } else if (isOutSet) { + labelX -= unit; + labelY -= unit; + anchor = 'end'; + } + $label.attr('x', labelX).attr('y', labelY). + attr('text-anchor', anchor); + }; + + updateUI(); + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + updateUI(); + }; + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updateUI(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updateUI(); + }; + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var device_mouseoutHandler = function(event) { + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + + device.$ui.on('mouseover', function(event) { + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + out1.setValue(getGroupByLabel(device.getLabel() ).getValue() ); + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).on('mouseout', device_mouseoutHandler); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler); + }).on('deviceLabelChange', function() { + + groupManager.reset(); + + var lastGrp = getGroupByLabel(lastLabel); + lastGrp.setValue(lastGrp.getValue() ); + + var newLabel = device.getLabel(); + var newGrp = getGroupByLabel(newLabel); + if (in1.getOutput() != null) { + newGrp.setInput(device); + } + newGrp.setValue(newGrp.getValue() ); + + lastLabel = newLabel; + + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + description: + 'Transmit a signal to another trasmitter that has same label.', + params: [], + code: '{"type":"' + device.deviceDef.type + '"}' + }; + }; + }; + }; + + $s.registerDevice('Transmitter', createTransmitterFactory() ); + +}(simcir); diff --git a/project2/Libraries/simcirjs/misc/simcir.d.ts b/project2/Libraries/simcirjs/misc/simcir.d.ts new file mode 100644 index 00000000..e8de5c02 --- /dev/null +++ b/project2/Libraries/simcirjs/misc/simcir.d.ts @@ -0,0 +1,127 @@ +// +// SimcirJS - TypeScript Declaration File +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +interface SimcirPoint { x: number, y: number } +interface SimcirSize { width: number, height: number } +interface SimcirRect extends SimcirPoint, SimcirSize {} + +interface SimcirEvent { target: JQuery, type: string } + +interface SimcirGraphics { + attr: { [name : string] : (string|number) }; + moveTo(x: number, y: number) : void; + lineTo(x: number, y: number) : void; + curveTo(x1: number, y1: number, x: number, y: number) : void; + closePath(close?: boolean) : void; + drawRect(x: number, y: number, width: number, height: number) : void; + drawCircle(x: number, y: number, r: number) : void; +} + +interface SimcirNode { + type: string; + label: string; + description: string; + $ui: JQuery; + headless: boolean; + getValue() : any; + setValue(value : any, force? : boolean) : void; +} + +interface SimcirInputNode extends SimcirNode { + setOutput(outNode : SimcirNode) : void; + getOutput() : SimcirOutputNode; +} + +interface SimcirOutputNode extends SimcirNode { + getInputs() : SimcirInputNode[]; + connectTo(inNode : SimcirInputNode) : void; + disconnectFrom(inNode : SimcirInputNode) : void; +} + +interface SimcirDeviceDefBase { [id : string] : string|number } + +interface SimcirDeviceDef extends SimcirDeviceDefBase { + type: string; + label?: string; +} + +interface SimcirDeviceInstance extends SimcirDeviceDef { + id: string; + x: number; + y: number; +} + +interface SimcirDocument { params: SimcirParamDescription[]; code: string; } + +interface SimcirParamDescription { + name: string; + type: string; + defaultValue: any; + description: string; +} + +interface SimcirDevice { + $ui: JQuery; + doc: SimcirDocument; + halfPitch: boolean; + headless: boolean; + scope: any; + deviceDef: Def; + addInput(label? : string, description? : string) : SimcirInputNode; + getInputs() : SimcirInputNode[]; + addOutput(label? : string, description? : string) : SimcirOutputNode; + getOutputs() : SimcirOutputNode[]; + getLabel() : string; + getSize() : SimcirSize; + createUI() : void; + getState() : any; +} + +interface SimcirConnectorDef { from: string; to: string; } + +interface SimcirData { + width?: number; + height?: number; + toolbox?: SimcirDeviceDef[]; + showToolbox?: boolean; + editable?: boolean; + layout? : SimcirCustomLayout; + devices?: SimcirDeviceInstance[]; + connectors?: SimcirConnectorDef[]; +} + +interface SimcirCustomLayout { + rows: number; + cols: number; + hideLabelOnWorkspace?: boolean; + nodes: { [label : string] : string }; +} + +type SimcirTypeFactory = (device : Def) => void; + +interface Simcir { + unit: number; + createSVGElement(tagName: string) : JQuery; + graphics($target: JQuery) : SimcirGraphics; + offset($o: JQuery) : SimcirPoint; + transform($o: JQuery, x: number, y: number, rotate: number) : void; + transform($o: JQuery) : { x: number; y: number; rotate: number; }; + enableEvents($o: JQuery, enable: boolean) : void; + controller($ui: JQuery, controller: any) : void; + controller($ui: JQuery) : any; + registerDevice(type: string, factory: SimcirTypeFactory) : void; + registerDevice(type: string, data: SimcirData) : void; + clearSimcir($placeHolder: JQuery) : JQuery; + setupSimcir($placeHolder: JQuery, data: SimcirData) : JQuery; + createWorkspace(data: SimcirData) : JQuery; +} + +declare var simcir : Simcir; diff --git a/project2/Libraries/simcirjs/simcir-basicset.css b/project2/Libraries/simcirjs/simcir-basicset.css new file mode 100644 index 00000000..9c163744 --- /dev/null +++ b/project2/Libraries/simcirjs/simcir-basicset.css @@ -0,0 +1,44 @@ +/* + * SimcirJS - basicset + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-basicset-dc { + fill: #ffcccc; +} + +.simcir-basicset-switch { + fill: #ccccff; +} + +.simcir-basicset-switch-button-pressed { + fill: #9999cc; +} + +.simcir-basicset-symbol { + stroke: #000000; + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; +} + +.simcir-basicset-osc { + fill: #ffcccc; +} + +.simcir-basicset-knob { + stroke: none; + fill: #333333; +} + +.simcir-basicset-knob-mark { + stroke: #ffffff; + stroke-width: 3; +} diff --git a/project2/Libraries/simcirjs/simcir-basicset.js b/project2/Libraries/simcirjs/simcir-basicset.js new file mode 100644 index 00000000..5ce378d6 --- /dev/null +++ b/project2/Libraries/simcirjs/simcir-basicset.js @@ -0,0 +1,928 @@ +// +// SimcirJS - basicset +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DC +// LED +// PMOS +// NMOS +// PushOff +// PushOn +// Toggle +// BUF +// NOT +// AND +// NAND +// OR +// NOR +// EOR +// ENOR +// OSC +// 7seg +// 16seg +// 4bit7seg +// RotaryEncoder +// BusIn +// BusOut + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + // red/black + var defaultLEDColor = '#ff0000'; + var defaultLEDBgColor = '#000000'; + + var multiplyColor = function() { + var HEX = '0123456789abcdef'; + var toIColor = function(sColor) { + if (!sColor) { + return 0; + } + sColor = sColor.toLowerCase(); + if (sColor.match(/^#[0-9a-f]{3}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt( (i >> 1) + 1) ); + } + return iColor; + } else if (sColor.match(/^#[0-9a-f]{6}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt(i + 1) ); + } + return iColor; + } + return 0; + }; + var toSColor = function(iColor) { + var sColor = '#'; + for (var i = 0; i < 6; i += 1) { + sColor += HEX.charAt( (iColor >>> (5 - i) * 4) & 0x0f); + } + return sColor; + }; + var toRGB = function(iColor) { + return { + r: (iColor >>> 16) & 0xff, + g: (iColor >>> 8) & 0xff, + b: iColor & 0xff}; + }; + var multiplyColor = function(iColor1, iColor2, ratio) { + var c1 = toRGB(iColor1); + var c2 = toRGB(iColor2); + var mc = function(v1, v2, ratio) { + return ~~Math.max(0, Math.min( (v1 - v2) * ratio + v2, 255) ); + }; + return (mc(c1.r, c2.r, ratio) << 16) | + (mc(c1.g, c2.g, ratio) << 8) | mc(c1.b, c2.b, ratio); + }; + return function(color1, color2, ratio) { + return toSColor(multiplyColor( + toIColor(color1), toIColor(color2), ratio) ); + }; + }(); + + // symbol draw functions + var drawBUF = function(g, x, y, width, height) { + g.moveTo(x, y); + g.lineTo(x + width, y + height / 2); + g.lineTo(x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawAND = function(g, x, y, width, height) { + g.moveTo(x, y); + g.curveTo(x + width, y, x + width, y + height / 2); + g.curveTo(x + width, y + height, x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawOR = function(g, x, y, width, height) { + var depth = width * 0.2; + g.moveTo(x, y); + g.curveTo(x + width - depth, y, x + width, y + height / 2); + g.curveTo(x + width - depth, y + height, x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(true); + }; + var drawNMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5, y + height/2); + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + var drawPMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5 - 3, y + height/2); + + g.drawCircle(x + 2*width/5 - 2, y + height/2,1.5); + + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + var drawEOR = function(g, x, y, width, height) { + drawOR(g, x + 3, y, width - 3, height); + var depth = (width - 3) * 0.2; + g.moveTo(x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(); + }; + var drawNOT = function(g, x, y, width, height) { + drawBUF(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNAND = function(g, x, y, width, height) { + drawAND(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNOR = function(g, x, y, width, height) { + drawOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawENOR = function(g, x, y, width, height) { + drawEOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + // logical functions + var AND = function(a, b) { return a & b; }; + var OR = function(a, b) { return a | b; }; + var EOR = function(a, b) { return a ^ b; }; + var BUF = function(a) { return (a == 1)? 1 : 0; }; + var NOT = function(a) { return (a == 1)? 0 : 1; }; + + var onValue = 1; + var offValue = null; + var isHot = function(v) { return v != null; }; + var intValue = function(v) { return isHot(v)? 1 : 0; }; + + var createSwitchFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + var on = (type == 'PushOff'); + + if (type == 'Toggle' && device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return type == 'Toggle'? { on : on } : null; + }; + + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + var updateOutput = function() { + out1.setValue(on? in1.getValue() : null); + }; + updateOutput(); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var $button = $s.createSVGElement('rect'). + attr({x: size.width / 4, y: size.height / 4, + width: size.width / 2, height: size.height / 2, + rx: 2, ry: 2}); + $button.addClass('simcir-basicset-switch-button'); + if (type == 'Toggle' && on) { + $button.addClass('simcir-basicset-switch-button-pressed'); + } + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + if (type == 'PushOn') { + on = true; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = false; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + on = !on; + $button.addClass('simcir-basicset-switch-button-pressed'); + } + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_mouseUpHandler = function(event) { + if (type == 'PushOn') { + on = false; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = true; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + // keep state + if (!on) { + $button.removeClass('simcir-basicset-switch-button-pressed'); + } + } + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + }); + device.$ui.addClass('simcir-basicset-switch'); + }; + }; + }; + + var createLogicGateFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + /* + var segBase = function() { + return { + width: 0, + height: 0, + allSegments: '', + drawSegment: function(g, segment, color) {}, + drawPoint: function(g, color) {} + }; + }; + */ + //---------------------------------------------------------------------------------- + var createMOSFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + device.addInput(); + device.addInput(); + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getMOSSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + + //---------------------------------------------------------------------------------- + + var _7Seg = function() { + var _SEGMENT_DATA = { + a: [575, 138, 494, 211, 249, 211, 194, 137, 213, 120, 559, 120], + b: [595, 160, 544, 452, 493, 500, 459, 456, 500, 220, 582, 146], + c: [525, 560, 476, 842, 465, 852, 401, 792, 441, 562, 491, 516], + d: [457, 860, 421, 892, 94, 892, 69, 864, 144, 801, 394, 801], + e: [181, 560, 141, 789, 61, 856, 48, 841, 96, 566, 148, 516], + f: [241, 218, 200, 453, 150, 500, 115, 454, 166, 162, 185, 145], + g: [485, 507, 433, 555, 190, 555, 156, 509, 204, 464, 451, 464] + }; + return { + width: 636, + height: 1000, + allSegments: 'abcdefg', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(542, 840, 46); + } + }; + }(); + + var _16Seg = function() { + var _SEGMENT_DATA = { + a: [255, 184, 356, 184, 407, 142, 373, 102, 187, 102], + b: [418, 144, 451, 184, 552, 184, 651, 102, 468, 102], + c: [557, 190, 507, 455, 540, 495, 590, 454, 656, 108], + d: [487, 550, 438, 816, 506, 898, 573, 547, 539, 507], + e: [281, 863, 315, 903, 500, 903, 432, 821, 331, 821], + f: [35, 903, 220, 903, 270, 861, 236, 821, 135, 821], + g: [97, 548, 30, 897, 129, 815, 180, 547, 147, 507], + h: [114, 455, 148, 495, 198, 454, 248, 189, 181, 107], + i: [233, 315, 280, 452, 341, 493, 326, 331, 255, 200], + j: [361, 190, 334, 331, 349, 485, 422, 312, 445, 189, 412, 149], + k: [430, 316, 354, 492, 432, 452, 522, 334, 547, 200], + l: [354, 502, 408, 542, 484, 542, 534, 500, 501, 460, 434, 460], + m: [361, 674, 432, 805, 454, 691, 405, 550, 351, 509], + n: [265, 693, 242, 816, 276, 856, 326, 815, 353, 676, 343, 518], + o: [255, 546, 165, 671, 139, 805, 258, 689, 338, 510], + p: [153, 502, 187, 542, 254, 542, 338, 500, 278, 460, 203, 460] + }; + return { + width: 690, + height: 1000, + allSegments: 'abcdefghijklmnop', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(610, 900, 30); + } + }; + }(); + + var drawSeg = function(seg, g, pattern, hiColor, loColor, bgColor) { + g.attr['stroke'] = 'none'; + if (bgColor) { + g.attr['fill'] = bgColor; + g.drawRect(0, 0, seg.width, seg.height); + } + var on; + for (var i = 0; i < seg.allSegments.length; i += 1) { + var c = seg.allSegments.charAt(i); + on = (pattern != null && pattern.indexOf(c) != -1); + seg.drawSegment(g, c, on? hiColor : loColor); + } + on = (pattern != null && pattern.indexOf('.') != -1); + seg.drawPoint(g, on? hiColor : loColor); + }; + + var createSegUI = function(device, seg) { + var size = device.getSize(); + var sw = seg.width; + var sh = seg.height; + var dw = size.width - unit; + var dh = size.height - unit; + var scale = (sw / sh > dw / dh)? dw / sw : dh / sh; + var tx = (size.width - seg.width * scale) / 2; + var ty = (size.height - seg.height * scale) / 2; + return $s.createSVGElement('g'). + attr('transform', 'translate(' + tx + ' ' + ty + ')' + + ' scale(' + scale + ') '); + }; + + var createLEDSegFactory = function(seg) { + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var allSegs = seg.allSegments + '.'; + device.halfPitch = true; + for (var i = 0; i < allSegs.length; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var segs = ''; + for (var i = 0; i < allSegs.length; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + segs += allSegs.charAt(i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), segs, + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createLED4bitFactory = function() { + + var _PATTERNS = { + 0: 'abcdef', + 1: 'bc', + 2: 'abdeg', + 3: 'abcdg', + 4: 'bcfg', + 5: 'acdfg', + 6: 'acdefg', + 7: 'abc', + 8: 'abcdefg', + 9: 'abcdfg', + a: 'abcefg', + b: 'cdefg', + c: 'adef', + d: 'bcdeg', + e: 'adefg', + f: 'aefg' + }; + + var getPattern = function(value) { + return _PATTERNS['0123456789abcdef'.charAt(value)]; + }; + + var seg = _7Seg; + + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + for (var i = 0; i < 4; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var value = 0; + for (var i = 0; i < 4; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + value += (1 << i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), getPattern(value), + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createRotaryEncoderFactory = function() { + var _MIN_ANGLE = 45; + var _MAX_ANGLE = 315; + var thetaToAngle = function(theta) { + var angle = (theta - Math.PI / 2) / Math.PI * 180; + while (angle < 0) { + angle += 360; + } + while (angle > 360) { + angle -= 360; + } + return angle; + }; + return function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 4); + device.halfPitch = numOutputs > 4; + device.addInput(); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + + var $knob = $s.createSVGElement('g'). + attr('class', 'simcir-basicset-knob'). + append($s.createSVGElement('rect'). + attr({x:-10,y:-10,width:20,height:20})); + var r = Math.min(size.width, size.height) / 4 * 1.5; + var g = $s.graphics($knob); + g.drawCircle(0, 0, r); + g.attr['class'] = 'simcir-basicset-knob-mark'; + g.moveTo(0, 0); + g.lineTo(r, 0); + g.closePath(); + device.$ui.append($knob); + + var _angle = _MIN_ANGLE; + var setAngle = function(angle) { + _angle = Math.max(_MIN_ANGLE, Math.min(angle, _MAX_ANGLE) ); + update(); + }; + + var dragPoint = null; + var knob_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + dragPoint = {x: event.pageX, y: event.pageY}; + $(document).on('mousemove', knob_mouseMoveHandler); + $(document).on('mouseup', knob_mouseUpHandler); + }; + var knob_mouseMoveHandler = function(event) { + var off = $knob.parent('svg').offset(); + var pos = $s.offset($knob); + var cx = off.left + pos.x; + var cy = off.top + pos.y; + var dx = event.pageX - cx; + var dy = event.pageY - cy; + if (dx == 0 && dy == 0) return; + setAngle(thetaToAngle(Math.atan2(dy, dx) ) ); + }; + var knob_mouseUpHandler = function(event) { + $(document).off('mousemove', knob_mouseMoveHandler); + $(document).off('mouseup', knob_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($knob, true); + $knob.on('mousedown', knob_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($knob, false); + $knob.off('mousedown', knob_mouseDownHandler); + }); + + var update = function() { + $s.transform($knob, size.width / 2, + size.height / 2, _angle + 90); + var max = 1 << numOutputs; + var value = Math.min( ( (_angle - _MIN_ANGLE) / + (_MAX_ANGLE - _MIN_ANGLE) * max), max - 1); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue( (value & (1 << i) )? + device.getInputs()[0].getValue() : null); + } + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 4, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":4}' + }; + }; + }; + }; + + // register direct current source + $s.registerDevice('DC', function(device) { + device.addOutput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-dc'); + }; + device.$ui.on('deviceAdd', function() { + device.getOutputs()[0].setValue(onValue); + }); + device.$ui.on('deviceRemove', function() { + device.getOutputs()[0].setValue(null); + }); + }); + + // register simple LED + $s.registerDevice('LED', function(device) { + var in1 = device.addInput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var bLoColor = multiplyColor(hiColor, bgColor, 0.2); + var bHiColor = multiplyColor(hiColor, bgColor, 0.8); + var size = device.getSize(); + var $ledbase = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4}). + attr('stroke', 'none'). + attr('fill', bLoColor); + device.$ui.append($ledbase); + var $led = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4 * 0.8}). + attr('stroke', 'none'). + attr('fill', loColor); + device.$ui.append($led); + device.$ui.on('inputValueChange', function() { + $ledbase.attr('fill', isHot(in1.getValue() )? bHiColor : bLoColor); + $led.attr('fill', isHot(in1.getValue() )? hiColor : loColor); + }); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }); + + // register switches + $s.registerDevice('PushOff', createSwitchFactory('PushOff') ); + $s.registerDevice('PushOn', createSwitchFactory('PushOn') ); + $s.registerDevice('Toggle', createSwitchFactory('Toggle') ); + + // register logic gates + $s.registerDevice('BUF', createLogicGateFactory(null, BUF, drawBUF) ); + $s.registerDevice('NOT', createLogicGateFactory(null, NOT, drawNOT) ); + $s.registerDevice('AND', createLogicGateFactory(AND, BUF, drawAND) ); + $s.registerDevice('NAND', createLogicGateFactory(AND, NOT, drawNAND) ); + $s.registerDevice('OR', createLogicGateFactory(OR, BUF, drawOR) ); + $s.registerDevice('NOR', createLogicGateFactory(OR, NOT, drawNOR) ); + $s.registerDevice('XOR', createLogicGateFactory(EOR, BUF, drawEOR) ); + $s.registerDevice('XNOR', createLogicGateFactory(EOR, NOT, drawENOR) ); + //--------------------------------------------------------------- + $s.registerDevice('NMOS', createMOSFactory(null, NOT, drawNMOS) ); + $s.registerDevice('PMOS', createMOSFactory(null, NOT, drawPMOS) ); + //--------------------------------------------------------------- + + // deprecated. not displayed in the default toolbox. + $s.registerDevice('EOR', createLogicGateFactory(EOR, BUF, drawEOR), true); + $s.registerDevice('ENOR', createLogicGateFactory(EOR, NOT, drawENOR), true); + + // register Oscillator + $s.registerDevice('OSC', function(device) { + var freq = device.deviceDef.freq || 10; + var delay = ~~(500 / freq); + var out1 = device.addOutput(); + var timerId = null; + var on = false; + device.$ui.on('deviceAdd', function() { + timerId = window.setInterval(function() { + out1.setValue(on? onValue : offValue); + on = !on; + }, delay); + }); + device.$ui.on('deviceRemove', function() { + if (timerId != null) { + window.clearInterval(timerId); + timerId = null; + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-osc'); + device.doc = { + params: [ + {name: 'freq', type: 'number', defaultValue: '10', + description: 'frequency of an oscillator.'} + ], + code: '{"type":"' + device.deviceDef.type + '","freq":10}' + }; + }; + }); + + // register LED seg + $s.registerDevice('7seg', createLEDSegFactory(_7Seg) ); + $s.registerDevice('16seg', createLEDSegFactory(_16Seg) ); + $s.registerDevice('4bit7seg', createLED4bitFactory() ); + + // register Rotary Encoder + $s.registerDevice('RotaryEncoder', createRotaryEncoderFactory() ); + + $s.registerDevice('BusIn', function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 8); + device.halfPitch = true; + device.addInput('', 'x' + numOutputs); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + var extractValue = function(busValue, i) { + return (busValue != null && typeof busValue == 'object' && + typeof busValue[i] != 'undefined')? busValue[i] : null; + }; + device.$ui.on('inputValueChange', function() { + var busValue = device.getInputs()[0].getValue(); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue(extractValue(busValue, i) ); + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 8, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":8}' + }; + }; + }); + + $s.registerDevice('BusOut', function(device) { + var numInputs = Math.max(2, device.deviceDef.numInputs || 8); + device.halfPitch = true; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput('', 'x' + numInputs); + device.$ui.on('inputValueChange', function() { + var busValue = []; + var hotCount = 0; + for (var i = 0; i < numInputs; i += 1) { + var value = device.getInputs()[i].getValue(); + if (isHot(value) ) { + hotCount += 1; + } + busValue.push(value); + } + device.getOutputs()[0].setValue( + (hotCount > 0)? busValue : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numInputs', type: 'number', defaultValue: 8, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":8}' + }; + }; + }); + +}(simcir); diff --git a/project2/Libraries/simcirjs/simcir-library.js b/project2/Libraries/simcirjs/simcir-library.js new file mode 100644 index 00000000..b8af8656 --- /dev/null +++ b/project2/Libraries/simcirjs/simcir-library.js @@ -0,0 +1,599 @@ +// +// SimcirJS - library +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// RS-FF +// JK-FF +// T-FF +// D-FF +// 8bitCounter +// HalfAdder +// FullAdder +// 4bitAdder +// 2to4BinaryDecoder +// 3to8BinaryDecoder +// 4to16BinaryDecoder + +simcir.registerDevice('RS-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"NAND","id":"dev0","x":184,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev1","x":184,"y":80,"label":"NAND"}, + {"type":"In","id":"dev2","x":136,"y":24,"label":"~S"}, + {"type":"In","id":"dev3","x":136,"y":88,"label":"~R"}, + {"type":"Out","id":"dev4","x":232,"y":32,"label":"Q"}, + {"type":"Out","id":"dev5","x":232,"y":80,"label":"~Q"}, + {"type":"PushOff","id":"dev6","x":88,"y":24,"label":"PushOff"}, + {"type":"PushOff","id":"dev7","x":88,"y":88,"label":"PushOff"}, + {"type":"DC","id":"dev8","x":40,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev1.in1","to":"dev3.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev1.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('JK-FF', +{ + "width":480, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"RS-FF","id":"dev0","x":216,"y":112,"label":"RS-FF"}, + {"type":"RS-FF","id":"dev1","x":344,"y":112,"label":"RS-FF"}, + {"type":"NAND","numInputs":3,"id":"dev2","x":168,"y":80,"label":"NAND"}, + {"type":"NAND","numInputs":3,"id":"dev3","x":168,"y":144,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":296,"y":80,"label":"NAND"}, + {"type":"NAND","id":"dev5","x":296,"y":144,"label":"NAND"}, + {"type":"NOT","id":"dev6","x":168,"y":24,"label":"NOT"}, + {"type":"In","id":"dev7","x":120,"y":64,"label":"J"}, + {"type":"In","id":"dev8","x":120,"y":112,"label":"CLK"}, + {"type":"In","id":"dev9","x":120,"y":160,"label":"K"}, + {"type":"Out","id":"dev10","x":424,"y":80,"label":"Q"}, + {"type":"Out","id":"dev11","x":424,"y":144,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":72,"y":64,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":72,"y":112,"label":"PushOn"}, + {"type":"Toggle","id":"dev14","x":72,"y":160,"label":"Toggle"}, + {"type":"DC","id":"dev15","x":24,"y":112,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev7.out0"}, + {"from":"dev2.in2","to":"dev8.out0"}, + {"from":"dev3.in0","to":"dev8.out0"}, + {"from":"dev3.in1","to":"dev9.out0"}, + {"from":"dev3.in2","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev4.in1","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev0.out1"}, + {"from":"dev5.in1","to":"dev6.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev12.out0"}, + {"from":"dev8.in0","to":"dev13.out0"}, + {"from":"dev9.in0","to":"dev14.out0"}, + {"from":"dev10.in0","to":"dev1.out0"}, + {"from":"dev11.in0","to":"dev1.out1"}, + {"from":"dev12.in0","to":"dev15.out0"}, + {"from":"dev13.in0","to":"dev15.out0"}, + {"from":"dev14.in0","to":"dev15.out0"} + ] +} +); + +simcir.registerDevice('T-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"JK-FF","id":"dev0","x":168,"y":48,"label":"JK-FF"}, + {"type":"In","id":"dev1","x":120,"y":32,"label":"T"}, + {"type":"In","id":"dev2","x":120,"y":80,"label":"CLK"}, + {"type":"Out","id":"dev3","x":248,"y":32,"label":"Q"}, + {"type":"Out","id":"dev4","x":248,"y":80,"label":"~Q"}, + {"type":"Toggle","id":"dev5","x":72,"y":32,"label":"Toggle"}, + {"type":"PushOn","id":"dev6","x":72,"y":80,"label":"PushOn"}, + {"type":"DC","id":"dev7","x":24,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev0.in1","to":"dev2.out0"}, + {"from":"dev0.in2","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev4.in0","to":"dev0.out1"}, + {"from":"dev5.in0","to":"dev7.out0"}, + {"from":"dev6.in0","to":"dev7.out0"} + ] +} +); + +simcir.registerDevice('D-FF', +{ + "width":540, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":128,"y":24,"label":"D"}, + {"type":"In","id":"dev1","x":168,"y":128,"label":"CLK"}, + {"type":"NOT","id":"dev2","x":176,"y":64,"label":"NOT"}, + {"type":"NAND","id":"dev3","x":224,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":224,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev5","x":272,"y":64,"label":"RS-FF"}, + {"type":"NOT","id":"dev6","x":296,"y":128,"label":"NOT"}, + {"type":"NAND","id":"dev7","x":352,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev8","x":352,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev9","x":400,"y":64,"label":"RS-FF"}, + {"type":"Out","id":"dev10","x":480,"y":32,"label":"Q"}, + {"type":"Out","id":"dev11","x":480,"y":96,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":80,"y":24,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":80,"y":128,"label":"PushOn"}, + {"type":"DC","id":"dev14","x":32,"y":72,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev12.out0"}, + {"from":"dev1.in0","to":"dev13.out0"}, + {"from":"dev2.in0","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev4.in1","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev1.out0"}, + {"from":"dev7.in0","to":"dev5.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev6.out0"}, + {"from":"dev8.in1","to":"dev5.out1"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev8.out0"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev9.out1"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev13.in0","to":"dev14.out0"} + ] +} +); + +simcir.registerDevice('8bitCounter', +{ + "width":320, + "height":420, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"T-FF","id":"dev0","x":184,"y":16,"label":"T-FF"}, + {"type":"T-FF","id":"dev1","x":184,"y":64,"label":"T-FF"}, + {"type":"T-FF","id":"dev2","x":184,"y":112,"label":"T-FF"}, + {"type":"T-FF","id":"dev3","x":184,"y":160,"label":"T-FF"}, + {"type":"T-FF","id":"dev4","x":184,"y":208,"label":"T-FF"}, + {"type":"T-FF","id":"dev5","x":184,"y":256,"label":"T-FF"}, + {"type":"T-FF","id":"dev6","x":184,"y":304,"label":"T-FF"}, + {"type":"T-FF","id":"dev7","x":184,"y":352,"label":"T-FF"}, + {"type":"Out","id":"dev8","x":264,"y":16,"label":"D0"}, + {"type":"Out","id":"dev9","x":264,"y":64,"label":"D1"}, + {"type":"Out","id":"dev10","x":264,"y":112,"label":"D2"}, + {"type":"Out","id":"dev11","x":264,"y":160,"label":"D3"}, + {"type":"Out","id":"dev12","x":264,"y":208,"label":"D4"}, + {"type":"Out","id":"dev13","x":264,"y":256,"label":"D5"}, + {"type":"Out","id":"dev14","x":264,"y":304,"label":"D6"}, + {"type":"Out","id":"dev15","x":264,"y":352,"label":"D7"}, + {"type":"In","id":"dev16","x":120,"y":16,"label":"T"}, + {"type":"In","id":"dev17","x":120,"y":112,"label":"CLK"}, + {"type":"PushOn","id":"dev18","x":72,"y":112,"label":"PushOn"}, + {"type":"DC","id":"dev19","x":24,"y":16,"label":"DC"}, + {"type":"Toggle","id":"dev20","x":72,"y":16,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev16.out0"}, + {"from":"dev0.in1","to":"dev17.out0"}, + {"from":"dev1.in0","to":"dev16.out0"}, + {"from":"dev1.in1","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev16.out0"}, + {"from":"dev2.in1","to":"dev1.out0"}, + {"from":"dev3.in0","to":"dev16.out0"}, + {"from":"dev3.in1","to":"dev2.out0"}, + {"from":"dev4.in0","to":"dev16.out0"}, + {"from":"dev4.in1","to":"dev3.out0"}, + {"from":"dev5.in0","to":"dev16.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev6.in1","to":"dev5.out0"}, + {"from":"dev7.in0","to":"dev16.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev9.in0","to":"dev1.out0"}, + {"from":"dev10.in0","to":"dev2.out0"}, + {"from":"dev11.in0","to":"dev3.out0"}, + {"from":"dev12.in0","to":"dev4.out0"}, + {"from":"dev13.in0","to":"dev5.out0"}, + {"from":"dev14.in0","to":"dev6.out0"}, + {"from":"dev15.in0","to":"dev7.out0"}, + {"from":"dev16.in0","to":"dev20.out0"}, + {"from":"dev17.in0","to":"dev18.out0"}, + {"from":"dev18.in0","to":"dev19.out0"}, + {"from":"dev20.in0","to":"dev19.out0"} + ] +} +); + +simcir.registerDevice('HalfAdder', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"Toggle","id":"dev0","x":96,"y":80,"label":"Toggle"}, + {"type":"DC","id":"dev1","x":48,"y":56,"label":"DC"}, + {"type":"AND","id":"dev2","x":192,"y":80,"label":"AND"}, + {"type":"XOR","id":"dev3","x":192,"y":32,"label":"XOR"}, + {"type":"In","id":"dev4","x":144,"y":32,"label":"A"}, + {"type":"In","id":"dev5","x":144,"y":80,"label":"B"}, + {"type":"Out","id":"dev6","x":240,"y":32,"label":"S"}, + {"type":"Out","id":"dev7","x":240,"y":80,"label":"C"}, + {"type":"Toggle","id":"dev8","x":96,"y":32,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev2.in0","to":"dev4.out0"}, + {"from":"dev2.in1","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev4.out0"}, + {"from":"dev3.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev8.out0"}, + {"from":"dev5.in0","to":"dev0.out0"}, + {"from":"dev6.in0","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev1.out0"} + ] +} +); + +simcir.registerDevice('FullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('4bitAdder', +{ + "width":280, + "height":480, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"FullAdder","id":"dev0","x":120,"y":72,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev1","x":120,"y":136,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev2","x":120,"y":200,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev3","x":120,"y":264,"label":"FullAdder"}, + {"type":"In","id":"dev4","x":40,"y":80,"label":"A0"}, + {"type":"In","id":"dev5","x":40,"y":128,"label":"A1"}, + {"type":"In","id":"dev6","x":40,"y":176,"label":"A2"}, + {"type":"In","id":"dev7","x":40,"y":224,"label":"A3"}, + {"type":"In","id":"dev8","x":40,"y":272,"label":"B0"}, + {"type":"In","id":"dev9","x":40,"y":320,"label":"B1"}, + {"type":"In","id":"dev10","x":40,"y":368,"label":"B2"}, + {"type":"In","id":"dev11","x":40,"y":416,"label":"B3"}, + {"type":"Out","id":"dev12","x":200,"y":72,"label":"S0"}, + {"type":"Out","id":"dev13","x":200,"y":120,"label":"S1"}, + {"type":"Out","id":"dev14","x":200,"y":168,"label":"S2"}, + {"type":"Out","id":"dev15","x":200,"y":216,"label":"S3"}, + {"type":"Out","id":"dev16","x":200,"y":280,"label":"Cout"}, + {"type":"In","id":"dev17","x":40,"y":24,"label":"Cin"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev17.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev0.in2","to":"dev8.out0"}, + {"from":"dev1.in0","to":"dev0.out1"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev9.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev6.out0"}, + {"from":"dev2.in2","to":"dev10.out0"}, + {"from":"dev3.in0","to":"dev2.out1"}, + {"from":"dev3.in1","to":"dev7.out0"}, + {"from":"dev3.in2","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev3.out0"}, + {"from":"dev16.in0","to":"dev3.out1"} + ] +} +); + +simcir.registerDevice('2to4BinaryDecoder', +{ + "width":400, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"AND","numInputs":3,"id":"dev0","x":280,"y":24,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev1","x":280,"y":72,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev2","x":280,"y":120,"label":"AND"}, + {"type":"NOT","id":"dev3","x":192,"y":48,"label":"NOT"}, + {"type":"AND","numInputs":3,"id":"dev4","x":280,"y":168,"label":"AND"}, + {"type":"NOT","id":"dev5","x":192,"y":96,"label":"NOT"}, + {"type":"In","id":"dev6","x":192,"y":176,"label":"OE"}, + {"type":"In","id":"dev7","x":128,"y":48,"label":"D0"}, + {"type":"In","id":"dev8","x":128,"y":96,"label":"D1"}, + {"type":"Toggle","id":"dev9","x":80,"y":48,"label":"Toggle"}, + {"type":"Toggle","id":"dev10","x":80,"y":96,"label":"Toggle"}, + {"type":"DC","id":"dev11","x":32,"y":96,"label":"DC"}, + {"type":"Out","id":"dev12","x":328,"y":24,"label":"A0"}, + {"type":"Out","id":"dev13","x":328,"y":72,"label":"A1"}, + {"type":"Out","id":"dev14","x":328,"y":120,"label":"A2"}, + {"type":"Out","id":"dev15","x":328,"y":168,"label":"A3"}, + {"type":"Toggle","id":"dev16","x":80,"y":144,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev0.in1","to":"dev5.out0"}, + {"from":"dev0.in2","to":"dev6.out0"}, + {"from":"dev1.in0","to":"dev7.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev6.out0"}, + {"from":"dev2.in0","to":"dev3.out0"}, + {"from":"dev2.in1","to":"dev8.out0"}, + {"from":"dev2.in2","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev7.out0"}, + {"from":"dev4.in1","to":"dev8.out0"}, + {"from":"dev4.in2","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev8.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev7.in0","to":"dev9.out0"}, + {"from":"dev8.in0","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev11.out0"}, + {"from":"dev10.in0","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev4.out0"}, + {"from":"dev16.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('3to8BinaryDecoder', +{ + "width":360, + "height":440, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":24,"y":144,"label":"D0"}, + {"type":"In","id":"dev1","x":24,"y":192,"label":"D1"}, + {"type":"In","id":"dev2","x":24,"y":240,"label":"D2"}, + {"type":"In","id":"dev3","x":24,"y":304,"label":"OE"}, + {"type":"NOT","id":"dev4","x":72,"y":240,"label":"NOT"}, + {"type":"AND","id":"dev5","x":120,"y":248,"label":"AND"}, + {"type":"AND","id":"dev6","x":120,"y":296,"label":"AND"}, + {"type":"2to4BinaryDecoder","id":"dev7","x":184,"y":144,"label":"2to4BinaryDecoder"}, + {"type":"2to4BinaryDecoder","id":"dev8","x":184,"y":224,"label":"2to4BinaryDecoder"}, + {"type":"Out","id":"dev9","x":296,"y":32,"label":"A0"}, + {"type":"Out","id":"dev10","x":296,"y":80,"label":"A1"}, + {"type":"Out","id":"dev11","x":296,"y":128,"label":"A2"}, + {"type":"Out","id":"dev12","x":296,"y":176,"label":"A3"}, + {"type":"Out","id":"dev13","x":296,"y":224,"label":"A4"}, + {"type":"Out","id":"dev14","x":296,"y":272,"label":"A5"}, + {"type":"Out","id":"dev15","x":296,"y":320,"label":"A6"}, + {"type":"Out","id":"dev16","x":296,"y":368,"label":"A7"} + ], + "connectors":[ + {"from":"dev4.in0","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev2.out0"}, + {"from":"dev6.in1","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev0.out0"}, + {"from":"dev7.in1","to":"dev1.out0"}, + {"from":"dev7.in2","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev7.out1"}, + {"from":"dev11.in0","to":"dev7.out2"}, + {"from":"dev12.in0","to":"dev7.out3"}, + {"from":"dev13.in0","to":"dev8.out0"}, + {"from":"dev14.in0","to":"dev8.out1"}, + {"from":"dev15.in0","to":"dev8.out2"}, + {"from":"dev16.in0","to":"dev8.out3"} + ] +} +); + +simcir.registerDevice('4to16BinaryDecoder', +{ + "width":440, + "height":360, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":32,"y":56,"label":"D0"}, + {"type":"In","id":"dev1","x":32,"y":104,"label":"D1"}, + {"type":"In","id":"dev2","x":32,"y":152,"label":"D2"}, + {"type":"In","id":"dev3","x":32,"y":200,"label":"D3"}, + {"type":"In","id":"dev4","x":32,"y":264,"label":"OE"}, + {"type":"NOT","id":"dev5","x":80,"y":200,"label":"NOT"}, + {"type":"AND","id":"dev6","x":136,"y":208,"label":"AND"}, + {"type":"AND","id":"dev7","x":136,"y":256,"label":"AND"}, + {"type":"3to8BinaryDecoder","id":"dev8","x":208,"y":32,"label":"3to8BinaryDecoder"}, + {"type":"3to8BinaryDecoder","id":"dev9","x":208,"y":184,"label":"3to8BinaryDecoder"}, + {"type":"BusOut","id":"dev10","x":320,"y":88,"label":"BusOut"}, + {"type":"BusOut","id":"dev11","x":320,"y":184,"label":"BusOut"}, + {"type":"Out","id":"dev12","x":376,"y":128,"label":"A0"}, + {"type":"Out","id":"dev13","x":376,"y":184,"label":"A1"} + ], + "connectors":[ + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev6.in1","to":"dev4.out0"}, + {"from":"dev7.in0","to":"dev3.out0"}, + {"from":"dev7.in1","to":"dev4.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev2.out0"}, + {"from":"dev8.in3","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev0.out0"}, + {"from":"dev9.in1","to":"dev1.out0"}, + {"from":"dev9.in2","to":"dev2.out0"}, + {"from":"dev9.in3","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev8.out0"}, + {"from":"dev10.in1","to":"dev8.out1"}, + {"from":"dev10.in2","to":"dev8.out2"}, + {"from":"dev10.in3","to":"dev8.out3"}, + {"from":"dev10.in4","to":"dev8.out4"}, + {"from":"dev10.in5","to":"dev8.out5"}, + {"from":"dev10.in6","to":"dev8.out6"}, + {"from":"dev10.in7","to":"dev8.out7"}, + {"from":"dev11.in0","to":"dev9.out0"}, + {"from":"dev11.in1","to":"dev9.out1"}, + {"from":"dev11.in2","to":"dev9.out2"}, + {"from":"dev11.in3","to":"dev9.out3"}, + {"from":"dev11.in4","to":"dev9.out4"}, + {"from":"dev11.in5","to":"dev9.out5"}, + {"from":"dev11.in6","to":"dev9.out6"}, + {"from":"dev11.in7","to":"dev9.out7"}, + {"from":"dev12.in0","to":"dev10.out0"}, + {"from":"dev13.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('OSCo', + { + "width":300, + "height":100, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"OSC","freq":0.5,"label":"CLK","id":"dev0","x":48,"y":64}, + {"type":"Delay","delay":1000,"id":"dev1","x":120,"y":72,"label":"Delay","state":{"direction":0}}, + {"type":"Out","id":"dev2","x":176,"y":64,"label":"Out"} + ], + "connectors":[ + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev1.out0"} + ] + + }); + +simcir.registerDevice('PassTransistor', + { + "width":400, + "height":300, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":72,"y":128,"label":"PMOS"}, + {"type":"NMOS","id":"dev1","x":272,"y":128,"label":"NMOS"}, + {"type":"In","id":"dev2","x":40,"y":32,"label":"PGate"}, + {"type":"In","id":"dev3","x":240,"y":32,"label":"NGate"}, + {"type":"In","id":"dev4","x":120,"y":224,"label":"In"}, + {"type":"Out","id":"dev5","x":200,"y":224,"label":"Out"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev1.in0","to":"dev3.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev5.in0","to":"dev0.out0"} + ] +}); \ No newline at end of file diff --git a/project2/Libraries/simcirjs/simcir.css b/project2/Libraries/simcirjs/simcir.css new file mode 100644 index 00000000..06c4aa04 --- /dev/null +++ b/project2/Libraries/simcirjs/simcir.css @@ -0,0 +1,218 @@ +/* + * SimcirJS + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-body { + display: inline-block; +} + +.simcir-workspace { + cursor: default; + overflow: hidden; + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +.simcir-pin-hole { + fill: #cccccc; + stroke: none; +} + +.simcir-toolbox { + fill: #eeeeee; +} + +.simcir-scrollbar { + fill: #cccccc; +} + +.simcir-scrollbar-bar { + fill: #aaaaaa; +} + +.simcir-scrollbar-bar:hover { + fill: #999999; +} + +.simcir-connector { + stroke-width: 1; + stroke: #0000ff; + stroke-linecap: round; +} + +.simcir-connector-hot { + /* stroke: #ff0000; */ +} + +.simcir-joint-point { + stroke-width: 3; +} + +.simcir-device { + fill: #cccccc; + stroke-width: 2; + stroke: #666666; +} + +.simcir-device-selected { + stroke: #0000ff; +} + +.simcir-device-label { + fill: #000000; + stroke-width: 0; + stroke: none; +} + +.simcir-selection-rect { + fill: none; + stroke-width: 1; + stroke: #0000ff; +} + +.simcir-node-type-in { + fill: #ffcc00; +} + +.simcir-node-type-out { + fill: #ffffff; +} + +.simcir-node { + stroke-width: 1; + stroke: #000000; +} + +.simcir-node-hot { + stroke: #ff0000; +} + +.simcir-node-hover { + stroke: #ffff00; +} + +.simcir-node-label { + fill: #000000; + stroke: none; +} + +.simcir-port { + stroke-width: 1; + stroke: #000000; +} + +.simcir-port-hole { + stroke: none; + fill: #000000; +} + +.simcir-json-data-area { + padding: 0px; + outline: none; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.simcir-dialog { + padding: 4px; + border-width: 2px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; + -webkit-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); +} + +.simcir-dialog-title { + margin-right: 4px; +} + +.simcir-dialog-close-button { + fill: #666666; + stroke: none; +} + +.simcir-dialog-close-button:hover { + fill: #888888; + stroke: none; +} + +.simcir-dialog-close-button-symbol { + fill: none; + stroke: #ffffff; + stroke-width: 2; +} + +.simcir-label-editor { + width: 100px; + border-width: 1px; + border-style: solid; + border-color: #cccccc; + background-color: #f0f0f0; + outline: none; +} + +.simcir-label-editor::-ms-clear { + display: none; + width: 0; + height: 0; +} + +/* simcir doc */ + +TABLE.simcir-doc-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-table, +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + padding: 16px; +} + +TABLE.simcir-doc-params-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-params-table, +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + padding: 2px; +} + +.simcir-doc-title { + font-weight: bold; + margin: 16px 0px 0px 0px; +} + +.simcir-doc-code { + padding: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #f0f0f0; +} diff --git a/project2/Libraries/simcirjs/simcir.js b/project2/Libraries/simcirjs/simcir.js new file mode 100644 index 00000000..f6ead88d --- /dev/null +++ b/project2/Libraries/simcirjs/simcir.js @@ -0,0 +1,2560 @@ +// +// SimcirJS +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// In +// Out +// Joint + +/* + Changes made by Utkarsh Chhapekar: + + dataFinal is a global variable that now stores the dynamic data when the + circuit is generated. + + For debugging purposes find the console.log(); functions in this file, all + of these functions are commented so remove the // and run use console on browser + to debug. + Note: The ones which are not commented are part of the default debugging options + of SimCir. + +*/ + +'use strict'; + +var simcir = {}; + +var dataFinal; +// +// https://github.com/kazuhikoarase/lessQuery +// +simcir.$ = function() { + + //console.log("in first main function"); + + var debug = location.hash == '#debug'; + + var cacheIdKey = '.lessqCacheId'; + var cacheIdSeq = 0; + var cache = {}; + + var getCache = function(elm) { + var cacheId = elm[cacheIdKey]; + if (typeof cacheId == 'undefined') { + elm[cacheIdKey] = cacheId = cacheIdSeq++; + cache[cacheId] = debug? { e : elm } : {}; + } + return cache[cacheId]; + }; + + var hasCache = function(elm) { + return typeof elm[cacheIdKey] != 'undefined'; + }; + + if (debug) { + var lastKeys = {}; + var showCacheCount = function() { + var cnt = 0; + var keys = {}; + for (var k in cache) { + cnt += 1; + if (!lastKeys[k]) { + console.log(cache[k]); + } + keys[k] = true; + } + lastKeys = keys; + console.log('cacheCount:' + cnt); + window.setTimeout(showCacheCount, 5000); + }; + showCacheCount(); + } + + var removeCache = function(elm) { + + if (typeof elm[cacheIdKey] != 'undefined') { + + // remove all listeners + var cacheId = elm[cacheIdKey]; + var listenerMap = cache[cacheId].listenerMap; + for (var type in listenerMap) { + var listeners = listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + elm.removeEventListener(type, listeners[i]); + } + } + + // delete refs + delete elm[cacheIdKey]; + delete cache[cacheId]; + } + + while (elm.firstChild) { + removeCache(elm.firstChild); + elm.removeChild(elm.firstChild); + } + }; + + var getData = function(elm) { + if (!getCache(elm).data) { getCache(elm).data = {}; } + return getCache(elm).data; + }; + + var getListeners = function(elm, type) { + if (!getCache(elm).listenerMap) { + getCache(elm).listenerMap = {}; } + if (!getCache(elm).listenerMap[type]) { + getCache(elm).listenerMap[type] = []; } + return getCache(elm).listenerMap[type]; + }; + + // add / remove event listener. + var addEventListener = function(elm, type, listener, add) { + var listeners = getListeners(elm, type); + var newListeners = []; + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] != listener) { + newListeners.push(listeners[i]); + } + } + if (add) { newListeners.push(listener); } + getCache(elm).listenerMap[type] = newListeners; + return true; + }; + + var CustomEvent = { + preventDefault : function() { this._pD = true; }, + stopPropagation : function() { this._sP = true; }, + stopImmediatePropagation : function() { this._sIp = true; } + }; + + var trigger = function(elm, type, data) { + var event = { type : type, target : elm, currentTarget : null, + _pD : false, _sP : false, _sIp : false, __proto__ : CustomEvent }; + for (var e = elm; e != null; e = e.parentNode) { + if (!hasCache(e) ) { continue; } + if (!getCache(e).listenerMap) { continue; } + if (!getCache(e).listenerMap[type]) { continue; } + event.currentTarget = e; + var listeners = getCache(e).listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + listeners[i].call(e, event, data); + if (event._sIp) { return; } + } + if (event._sP) { return; } + } + }; + + var data = function(elm, kv) { + if (arguments.length == 2) { + if (typeof kv == 'string') return getData(elm)[kv]; + for (var k in kv) { getData(elm)[k] = kv[k]; } + } else if (arguments.length == 3) { + getData(elm)[kv] = arguments[2]; + } + return elm; + }; + + var extend = function(o1, o2) { + for (var k in o2) { o1[k] = o2[k]; } return o1; + }; + + var each = function(it, callback) { + if (typeof it.splice == 'function') { + for (var i = 0; i < it.length; i += 1) { callback(i, it[i]); } + } else { + for (var k in it) { callback(k, it[k]); } + } + }; + + var grep = function(list, accept) { + var newList = []; + for (var i = 0; i < list.length; i += 1) { + var item = list[i]; + if (accept(item) ) { + newList.push(item); + } + } + return newList; + }; + + var addClass = function(elm, className, add) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + var newClasses = ''; + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { continue; } + newClasses += ' ' + classes[i]; + } + if (add) { newClasses += ' ' + className; } + elm.setAttribute('class', newClasses); + }; + + var hasClass = function(elm, className) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { return true; } + } + return false; + }; + + var matches = function(elm, selector) { + if (elm.nodeType != 1) { + return false; + } else if (!selector) { + return true; + } + var sels = selector.split(/[,\s]+/g); + for (var i = 0; i < sels.length; i += 1) { + var sel = sels[i]; + if (sel.substring(0, 1) == '#') { + throw 'not supported:' + sel; + } else if (sel.substring(0, 1) == '.') { + if (hasClass(elm, sel.substring(1) ) ) { + return true; + } + } else { + if (elm.tagName.toUpperCase() == sel.toUpperCase() ) { + return true; + } + } + } + return false; + }; + + var parser = new window.DOMParser(); + + var html = function(html) { + var doc = parser.parseFromString( + '
    ' + html + '
    ', + 'text/xml').firstChild; + var elms = []; + while (doc.firstChild) { + elms.push(doc.firstChild); + doc.removeChild(doc.firstChild); + } + elms.__proto__ = fn; + return elms; + }; + + var pxToNum = function(px) { + if (typeof px != 'string' || px.length <= 2 || + px.charAt(px.length - 2) != 'p' || + px.charAt(px.length - 1) != 'x') { + throw 'illegal px:' + px; + } + return +px.substring(0, px.length - 2); + }; + + var buildQuery = function(data) { + var query = ''; + for (var k in data) { + if (query.length > 0) { + query += '&'; + } + query += window.encodeURIComponent(k); + query += '='; + query += window.encodeURIComponent(data[k]); + } + return query; + }; + + var parseResponse = function() { + + var contentType = this.getResponseHeader('content-type'); + if (contentType != null) { + contentType = contentType.replace(/\s*;.+$/, '').toLowerCase(); + } + + if (contentType == 'text/xml' || + contentType == 'application/xml') { + return parser.parseFromString(this.responseText, 'text/xml'); + } else if (contentType == 'text/json' || + contentType == 'application/json') { + return JSON.parse(this.responseText); + } else { + return this.response; + } + }; + + var ajax = function(params) { + + params = extend({ + url: '', + method : 'GET', + contentType : 'application/x-www-form-urlencoded;charset=UTF-8', + cache: true, + processData: true, + async : true + }, params); + + if (!params.async) { + // force async. + throw 'not supported.'; + } + + var method = params.method.toUpperCase(); + var data = null; + var contentType = params.contentType; + if (method == 'POST' || method == 'PUT') { + data = (typeof params.data == 'object' && params.processData)? + buildQuery(params.data) : params.data; + } else { + contentType = false; + } + + var xhr = params.xhr? params.xhr() : new window.XMLHttpRequest(); + xhr.open(method, params.url, params.async); + if (contentType !== false) { + xhr.setRequestHeader('Content-Type', contentType); + } + xhr.onreadystatechange = function() { + if(xhr.readyState == window.XMLHttpRequest.DONE) { + try { + if (xhr.status == 200) { + done.call(xhr, parseResponse.call(this) ); + } else { + fail.call(xhr); + } + } finally { + always.call(xhr); + } + } + }; + + // call later + window.setTimeout(function() { xhr.send(data); }, 0); + + // callbacks + var done = function(data) {}; + var fail = function() {}; + var always = function() {}; + + var $ = { + done : function(callback) { done = callback; return $; }, + fail : function(callback) { fail = callback; return $; }, + always : function(callback) { always = callback; return $; }, + abort : function() { xhr.abort(); return $; } + }; + return $; + }; + + // 1. for single element + var fn = { + attr : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.getAttribute(kv); + for (var k in kv) { this.setAttribute(k, kv[k]); } + } else if (arguments.length == 2) { + this.setAttribute(kv, arguments[1]); + } + return this; + }, + prop : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this[kv]; + for (var k in kv) { this[k] = kv[k]; } + } else if (arguments.length == 2) { + this[kv] = arguments[1]; + } + return this; + }, + css : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.style[kv]; + for (var k in kv) { this.style[k] = kv[k]; } + } else if (arguments.length == 2) { + this.style[kv] = arguments[1]; + } + return this; + }, + data : function(kv) { + var args = [ this ]; + for (var i = 0; i < arguments.length; i += 1) { + args.push(arguments[i]); + }; + return data.apply(null, args); + }, + val : function() { + if (arguments.length == 0) { + return this.value || ''; + } else if (arguments.length == 1) { + this.value = arguments[0]; + } + return this; + }, + on : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.addEventListener(types[i], listener); + addEventListener(this, types[i], listener, true); + } + return this; + }, + off : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.removeEventListener(types[i], listener); + addEventListener(this, types[i], listener, false); + } + return this; + }, + trigger : function(type, data) { + trigger(this, type, data); + return this; + }, + offset : function() { + var off = { left : 0, top : 0 }; + var base = null; + for (var e = this; e.parentNode != null; e = e.parentNode) { + if (e.offsetParent != null) { + base = e; + break; + } + } + if (base != null) { + for (var e = base; e.offsetParent != null; e = e.offsetParent) { + off.left += e.offsetLeft; + off.top += e.offsetTop; + } + } + for (var e = this; e.parentNode != null && + e != document.body; e = e.parentNode) { + off.left -= e.scrollLeft; + off.top -= e.scrollTop; + } + return off; + }, + append : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + this.appendChild(elms[i]); + } + return this; + }, + prepend : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + if (this.firstChild) { + this.insertBefore(elms[i], this.firstChild); + } else { + this.appendChild(elms[i]); + } + } + return this; + }, + insertBefore : function(elms) { + var elm = elms[0]; + elm.parentNode.insertBefore(this, elm); + return this; + }, + insertAfter : function(elms) { + var elm = elms[0]; + if (elm.nextSibling) { + elm.parentNode.insertBefore(this, elm.nextSibling); + } else { + elm.parentNode.appendChild(this); + } + return this; + }, + remove : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + removeCache(this); + return this; + }, + detach : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + return this; + }, + parent : function() { + return $(this.parentNode); + }, + closest : function(selector) { + for (var e = this; e != null; e = e.parentNode) { + if (matches(e, selector) ) { + return $(e); + } + } + return $(); + }, + find : function(selector) { + var elms = []; + var childNodes = this.querySelectorAll(selector); + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + }, + children : function(selector) { + var elms = []; + var childNodes = this.childNodes; + for (var i = 0; i < childNodes.length; i += 1) { + if (matches(childNodes.item(i), selector) ) { + elms.push(childNodes.item(i) ); + } + } + elms.__proto__ = fn; + return elms; + }, + index : function(selector) { + return Array.prototype.indexOf.call( + $(this).parent().children(selector), this); + }, + clone : function() { return $(this.cloneNode(true) ); }, + focus : function() { this.focus(); return this; }, + select : function() { this.select(); return this; }, + submit : function() { this.submit(); return this; }, + scrollLeft : function() { + if (arguments.length == 0) return this.scrollLeft; + this.scrollLeft = arguments[0]; return this; + }, + scrollTop : function() { + if (arguments.length == 0) return this.scrollTop; + this.scrollTop = arguments[0]; return this; + }, + html : function() { + if (arguments.length == 0) return this.innerHTML; + this.innerHTML = arguments[0]; return this; + }, + text : function() { + if (typeof this.textContent != 'undefined') { + if (arguments.length == 0) return this.textContent; + this.textContent = arguments[0]; return this; + } else { + if (arguments.length == 0) return this.innerText; + this.innerText = arguments[0]; return this; + } + }, + outerWidth : function(margin) { + var w = this.offsetWidth; + if (margin) { + var cs = window.getComputedStyle(this, null); + return w + pxToNum(cs.marginLeft) + pxToNum(cs.marginRight); + } + return w; + }, + innerWidth : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth); + }, + width : function() { + if (this == window) return this.innerWidth; + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth) - + pxToNum(cs.paddingLeft) - pxToNum(cs.paddingRight); + }, + outerHeight : function(margin) { + var h = this.offsetHeight; + if (margin) { + var cs = window.getComputedStyle(this, null); + return h + pxToNum(cs.marginTop) + pxToNum(cs.marginBottom); + } + return h; + }, + innerHeight : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth); + }, + height : function() { + if (this == window) return this.innerHeight; + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth) - + pxToNum(cs.paddingTop) - pxToNum(cs.paddingBottom); + }, + addClass : function(className) { + addClass(this, className, true); return this; + }, + removeClass : function(className) { + addClass(this, className, false); return this; + }, + hasClass : function(className) { + return hasClass(this, className); + } + }; + + // 2. to array + each(fn, function(name, func) { + fn[name] = function() { + var newRet = null; + for (var i = 0; i < this.length; i += 1) { + var elm = this[i]; + var ret = func.apply(elm, arguments); + if (elm !== ret) { + if (ret != null && ret.__proto__ == fn) { + if (newRet == null) { newRet = []; } + newRet = newRet.concat(ret); + } else { + return ret; + } + } + } + if (newRet != null) { + newRet.__proto__ = fn; + return newRet; + } + return this; + }; + }); + + // 3. for array + fn = extend(fn, { + each : function(callback) { + for (var i = 0; i < this.length; i += 1) { + callback.call(this[i], i); + } + return this; + }, + first : function() { + return $(this.length > 0? this[0] : null); + }, + last : function() { + return $(this.length > 0? this[this.length - 1] : null); + } + }); + + var $ = function(target) { + + if (typeof target == 'function') { + + // ready + return $(document).on('DOMContentLoaded', target); + + } else if (typeof target == 'string') { + + if (target.charAt(0) == '<') { + + // dom creation + return html(target); + + } else { + + // query + var childNodes = document.querySelectorAll(target); + var elms = []; + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + } + + } else if (typeof target == 'object' && target != null) { + + if (target.__proto__ == fn) { + return target; + } else { + var elms = []; + elms.push(target); + elms.__proto__ = fn; + return elms; + } + + } else { + + var elms = []; + elms.__proto__ = fn; + return elms; + } + }; + + return extend($, { + fn : fn, extend : extend, each : each, grep : grep, + data : data, ajax : ajax }); +}(); + +!function($s) { + //console.log("in second main function"); + var $ = $s.$; + + var createSVGElement = function(tagName) { + return $(document.createElementNS( + 'http://www.w3.org/2000/svg', tagName) ); + }; + + var createSVG = function(w, h) { + return createSVGElement('svg').attr({ + version: '1.1', + width: w, height: h, + viewBox: '0 0 ' + w + ' ' + h + }); + }; + + var graphics = function($target) { + var attr = {}; + var buf = ''; + var moveTo = function(x, y) { + buf += ' M ' + x + ' ' + y; + }; + var lineTo = function(x, y) { + buf += ' L ' + x + ' ' + y; + }; + var curveTo = function(x1, y1, x, y) { + buf += ' Q ' + x1 + ' ' + y1 + ' ' + x + ' ' + y; + }; + var closePath = function(close) { + if (close) { + // really close path. + buf += ' Z'; + } + $target.append(createSVGElement('path'). + attr('d', buf).attr(attr) ); + buf = ''; + }; + var drawRect = function(x, y, width, height) { + $target.append(createSVGElement('rect'). + attr({x: x, y: y, width: width, height: height}).attr(attr) ); + }; + var drawCircle = function(x, y, r) { + $target.append(createSVGElement('circle'). + attr({cx: x, cy: y, r: r}).attr(attr) ); + }; + return { + attr: attr, + moveTo: moveTo, + lineTo: lineTo, + curveTo: curveTo, + closePath: closePath, + drawRect: drawRect, + drawCircle: drawCircle + }; + }; + + var transform = function() { + var attrX = 'simcir-transform-x'; + var attrY = 'simcir-transform-y'; + var attrRotate = 'simcir-transform-rotate'; + var num = function($o, k) { + var v = $o.attr(k); + return v? +v : 0; + }; + return function($o, x, y, rotate) { + if (arguments.length >= 3) { + var transform = 'translate(' + x + ' ' + y + ')'; + if (rotate) { + transform += ' rotate(' + rotate + ')'; + } + $o.attr('transform', transform); + $o.attr(attrX, x); + $o.attr(attrY, y); + $o.attr(attrRotate, rotate); + } else if (arguments.length == 1) { + return {x: num($o, attrX), y: num($o, attrY), + rotate: num($o, attrRotate)}; + } + }; + }(); + + var offset = function($o) { + var x = 0; + var y = 0; + while ($o[0].nodeName != 'svg') { + var pos = transform($o); + x += pos.x; + y += pos.y; + $o = $o.parent(); + } + return {x: x, y: y}; + }; + + var enableEvents = function($o, enable) { + $o.css('pointer-events', enable? 'visiblePainted' : 'none'); + }; + + var disableSelection = function($o) { + $o.each(function() { + this.onselectstart = function() { return false; }; + }).css('-webkit-user-select', 'none'); + }; + + var controller = function() { + var id = 'controller'; + return function($ui, controller) { + if (arguments.length == 1) { + return $.data($ui[0], id); + } else if (arguments.length == 2) { + $.data($ui[0], id, controller); + } + }; + }(); + + var eventQueue = function() { + var delay = 50; // ms + var limit = 40; // ms + var _queue = null; + var postEvent = function(event) { + if (_queue == null) { + _queue = []; + } + _queue.push(event); + }; + var dispatchEvent = function() { + var queue = _queue; + _queue = null; + while (queue.length > 0) { + var e = queue.shift(); + e.target.trigger(e.type); + } + }; + var getTime = function() { + return new Date().getTime(); + }; + var timerHandler = function() { + var start = getTime(); + while (_queue != null && getTime() - start < limit) { + dispatchEvent(); + } + window.setTimeout(timerHandler, + Math.max(delay - limit, delay - (getTime() - start) ) ); + }; + timerHandler(); + return { + postEvent: postEvent + }; + }(); + + var unit = 16; + var fontSize = 12; + + var createLabel = function(text) { + return createSVGElement('text'). + text(text). + css('font-size', fontSize + 'px'); + }; + + var createNode = function(type, label, description, headless) { + var $node = createSVGElement('g'). + attr('simcir-node-type', type); + if (!headless) { + $node.attr('class', 'simcir-node'); + } + var node = createNodeController({ + $ui: $node, type: type, label: label, + description: description, headless: headless}); + if (type == 'in') { + controller($node, createInputNodeController(node) ); + } else if (type == 'out') { + controller($node, createOutputNodeController(node) ); + } else { + throw 'unknown type:' + type; + } + return $node; + }; + + var isActiveNode = function($o) { + return $o.closest('.simcir-node').length == 1 && + $o.closest('.simcir-toolbox').length == 0; + }; + + var createNodeController = function(node) { + var _value = null; + var setValue = function(value, force) { + if (_value === value && !force) { + return; + } + _value = value; + eventQueue.postEvent({target: node.$ui, type: 'nodeValueChange'}); + }; + var getValue = function() { + return _value; + }; + + if (!node.headless) { + + node.$ui.attr('class', 'simcir-node simcir-node-type-' + node.type); + + var $circle = createSVGElement('circle'). + attr({cx: 0, cy: 0, r: 4}); + node.$ui.on('mouseover', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.addClass('simcir-node-hover'); + } + }); + node.$ui.on('mouseout', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.removeClass('simcir-node-hover'); + } + }); + node.$ui.append($circle); + var appendLabel = function(text, align) { + var $label = createLabel(text). + attr('class', 'simcir-node-label'); + enableEvents($label, false); + if (align == 'right') { + $label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + $label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } + node.$ui.append($label); + }; + if (node.label) { + if (node.type == 'in') { + appendLabel(node.label, 'right'); + } else if (node.type == 'out') { + appendLabel(node.label, 'left'); + } + } + if (node.description) { + if (node.type == 'in') { + appendLabel(node.description, 'left'); + } else if (node.type == 'out') { + appendLabel(node.description, 'right'); + } + } + node.$ui.on('nodeValueChange', function(event) { + if (_value != null) { + node.$ui.addClass('simcir-node-hot'); + } else { + node.$ui.removeClass('simcir-node-hot'); + } + }); + } + + return $.extend(node, { + setValue: setValue, + getValue: getValue + }); + }; + + var createInputNodeController = function(node) { + var output = null; + var setOutput = function(outNode) { + output = outNode; + }; + var getOutput = function() { + return output; + }; + return $.extend(node, { + setOutput: setOutput, + getOutput: getOutput + }); + }; + + var createOutputNodeController = function(node) { + var inputs = []; + var super_setValue = node.setValue; + var setValue = function(value) { + super_setValue(value); + for (var i = 0; i < inputs.length; i += 1) { + inputs[i].setValue(value); + } + }; + var connectTo = function(inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + inNode.setOutput(node); + inputs.push(inNode); + inNode.setValue(node.getValue(), true); + }; + var disconnectFrom = function(inNode) { + if (inNode.getOutput() != node) { + throw 'not connected.'; + } + inNode.setOutput(null); + inNode.setValue(null, true); + inputs = $.grep(inputs, function(v) { + return v != inNode; + }); + }; + var getInputs = function() { + return inputs; + }; + return $.extend(node, { + setValue: setValue, + getInputs: getInputs, + connectTo: connectTo, + disconnectFrom: disconnectFrom + }); + }; + + var createDevice = function(deviceDef, headless, scope) { + headless = headless || false; + scope = scope || null; + var $dev = createSVGElement('g'); + if (!headless) { + $dev.attr('class', 'simcir-device'); + } + controller($dev, createDeviceController( + {$ui: $dev, deviceDef: deviceDef, + headless: headless, scope: scope, doc: null}) ); + var factory = factories[deviceDef.type]; + if (factory) { + factory(controller($dev) ); + } + if (!headless) { + controller($dev).createUI(); + } + return $dev; + }; + + var createDeviceController = function(device) { + var inputs = []; + var outputs = []; + var addInput = function(label, description) { + var $node = createNode('in', label, description, device.headless); + $node.on('nodeValueChange', function(event) { + device.$ui.trigger('inputValueChange'); + }); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + inputs.push(node); + return node; + }; + var addOutput = function(label, description) { + var $node = createNode('out', label, description, device.headless); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + outputs.push(node); + return node; + }; + var getInputs = function() { + return inputs; + }; + var getOutputs = function() { + return outputs; + }; + var disconnectAll = function() { + $.each(getInputs(), function(i, inNode) { + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + }); + $.each(getOutputs(), function(i, outNode) { + $.each(outNode.getInputs(), function(i, inNode) { + outNode.disconnectFrom(inNode); + }); + }); + }; + device.$ui.on('dispose', function() { + $.each(getInputs(), function(i, inNode) { + inNode.$ui.remove(); + }); + $.each(getOutputs(), function(i, outNode) { + outNode.$ui.remove(); + }); + device.$ui.remove(); + } ); + + var selected = false; + var setSelected = function(value) { + selected = value; + device.$ui.trigger('deviceSelect'); + }; + var isSelected = function() { + return selected; + }; + + var label = device.deviceDef.label; + var defaultLabel = device.deviceDef.type; + if (typeof label == 'undefined') { + label = defaultLabel; + } + var setLabel = function(value) { + value = value.replace(/^\s+|\s+$/g, ''); + label = value || defaultLabel; + device.$ui.trigger('deviceLabelChange'); + }; + var getLabel = function() { + return label; + }; + + var getSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var getMOSSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var layoutUI = function() { + + var size = device.getSize(); + var w = size.width; + var h = size.height; + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: 0, width: w, height: h}); + + var pitch = device.halfPitch? unit / 2 : unit; + var layoutNodes = function(nodes, x) { + var offset = (h - pitch * (nodes.length - 1) ) / 2; + $.each(nodes, function(i, node) { + transform(node.$ui, x, pitch * i + offset); + }); + }; + layoutNodes(getInputs(), 0); + layoutNodes(getOutputs(), w); + + device.$ui.children('.simcir-device-label'). + attr({x: w / 2, y: h + fontSize}); + }; + + var createUI = function() { + + device.$ui.attr('class', 'simcir-device'); + device.$ui.on('deviceSelect', function() { + if (selected) { + $(this).addClass('simcir-device-selected'); + } else { + $(this).removeClass('simcir-device-selected'); + } + }); + + var $body = createSVGElement('rect'). + attr('class', 'simcir-device-body'). + attr('rx', 2).attr('ry', 2); + device.$ui.prepend($body); + + var $label = createLabel(label). + attr('class', 'simcir-device-label'). + attr('text-anchor', 'middle'); + device.$ui.on('deviceLabelChange', function() { + $label.text(getLabel() ); + }); + + var label_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var $workspace = $(event.target).closest('.simcir-workspace'); + if (!controller($workspace).data().editable) { + return; + } + var title = 'Enter device name '; + var $labelEditor = $(''). + addClass('simcir-label-editor'). + val($label.text() ). + on('keydown', function(event) { + if (event.keyCode == 13) { + // ENTER + setLabel($(this).val() ); + $dlg.remove(); + } else if (event.keyCode == 27) { + // ESC + $dlg.remove(); + } + } ); + var $placeHolder = $('
    '). + append($labelEditor); + var $dlg = showDialog(title, $placeHolder); + $labelEditor.focus(); + }; + device.$ui.on('deviceAdd', function() { + $label.on('dblclick', label_dblClickHandler); + } ); + device.$ui.on('deviceRemove', function() { + $label.off('dblclick', label_dblClickHandler); + } ); + device.$ui.append($label); + + layoutUI(); + + }; + + var getState = function() { return null; }; + + return $.extend(device, { + addInput: addInput, + addOutput: addOutput, + getInputs: getInputs, + getOutputs: getOutputs, + disconnectAll: disconnectAll, + setSelected: setSelected, + isSelected: isSelected, + getLabel: getLabel, + halfPitch: false, + getSize: getSize, + getMOSSize: getMOSSize, + createUI: createUI, + layoutUI: layoutUI, + getState: getState + }); + }; + + var createConnector = function(x1, y1, x2, y2) { + return createSVGElement('path'). + attr('d', 'M ' + x1 + ' ' + y1 + ' L ' + x2 + ' ' + y2). + attr('class', 'simcir-connector'); + }; + + var connect = function($node1, $node2) { + var type1 = $node1.attr('simcir-node-type'); + var type2 = $node2.attr('simcir-node-type'); + if (type1 == 'in' && type2 == 'out') { + controller($node2).connectTo(controller($node1) ); + } else if (type1 == 'out' && type2 == 'in') { + controller($node1).connectTo(controller($node2) ); + } + }; + + var buildCircuit = function(data, headless, scope) { + var $devices = []; + var $devMap = {}; + var getNode = function(path) { + if (!path.match(/^(\w+)\.(in|out)([0-9]+)$/g) ) { + throw 'unknown path:' + path; + } + var devId = RegExp.$1; + var type = RegExp.$2; + var index = +RegExp.$3; + return (type == 'in')? + controller($devMap[devId]).getInputs()[index] : + controller($devMap[devId]).getOutputs()[index]; + }; + $.each(data.devices, function(i, deviceDef) { + var $dev = createDevice(deviceDef, headless, scope); + transform($dev, deviceDef.x, deviceDef.y); + $devices.push($dev); + $devMap[deviceDef.id] = $dev; + }); + $.each(data.connectors, function(i, conn) { + var nodeFrom = getNode(conn.from); + var nodeTo = getNode(conn.to); + if (nodeFrom && nodeTo) { + connect(nodeFrom.$ui, nodeTo.$ui); + } + }); + return $devices; + }; + + var dialogManager = function() { + var dialogs = []; + var updateDialogs = function($dlg, remove) { + var newDialogs = []; + $.each(dialogs, function(i) { + if (dialogs[i] != $dlg) { + newDialogs.push(dialogs[i]); + } + }); + if (!remove) { + newDialogs.push($dlg); + } + // renumber z-index + $.each(newDialogs, function(i) { + newDialogs[i].css('z-index', '' + (i + 1) ); + }); + dialogs = newDialogs; + }; + return { + add : function($dlg) { + updateDialogs($dlg); + }, + remove : function($dlg) { + updateDialogs($dlg, true); + }, + toFront : function($dlg) { + updateDialogs($dlg); + } + }; + }(); + + var showDialog = function(title, $content) { + var $closeButton = function() { + var r = 16; + var pad = 4; + var $btn = createSVG(r, r). + attr('class', 'simcir-dialog-close-button'); + var g = graphics($btn); + g.drawRect(0, 0, r, r); + g.attr['class'] = 'simcir-dialog-close-button-symbol'; + g.moveTo(pad, pad); + g.lineTo(r - pad, r - pad); + g.closePath(); + g.moveTo(r - pad, pad); + g.lineTo(pad, r - pad); + g.closePath(); + return $btn; + }(); + var $title = $('
    '). + addClass('simcir-dialog-title'). + text(title). + css('cursor', 'default'). + on('mousedown', function(event) { + event.preventDefault(); + }); + var $dlg = $('
    '). + addClass('simcir-dialog'). + css({position:'absolute'}). + append($title.css('float', 'left') ). + append($closeButton.css('float', 'right') ). + append($('
    ').css('clear', 'both') ). + append($content); + $('BODY').append($dlg); + dialogManager.add($dlg); + var dragPoint = null; + var dlg_mouseDownHandler = function(event) { + if (!$(event.target).hasClass('simcir-dialog') && + !$(event.target).hasClass('simcir-dialog-title') ) { + return; + } + event.preventDefault(); + dialogManager.toFront($dlg); + var off = $dlg.offset(); + dragPoint = { + x: event.pageX - off.left, + y: event.pageY - off.top}; + $(document).on('mousemove', dlg_mouseMoveHandler); + $(document).on('mouseup', dlg_mouseUpHandler); + }; + var dlg_mouseMoveHandler = function(event) { + moveTo( + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + var dlg_mouseUpHandler = function(event) { + $(document).off('mousemove', dlg_mouseMoveHandler); + $(document).off('mouseup', dlg_mouseUpHandler); + }; + $dlg.on('mousedown', dlg_mouseDownHandler); + $closeButton.on('mousedown', function() { + $dlg.trigger('close'); + $dlg.remove(); + dialogManager.remove($dlg); + }); + var w = $dlg.width(); + var h = $dlg.height(); + var cw = $(window).width(); + var ch = $(window).height(); + var getProp = function(id) { + return $('HTML')[id]() || $('BODY')[id](); + }; + var x = (cw - w) / 2 + getProp('scrollLeft'); + var y = (ch - h) / 2 + getProp('scrollTop'); + var moveTo = function(x, y) { + $dlg.css({left: x + 'px', top: y + 'px'}); + }; + moveTo(x, y); + return $dlg; + }; + + var createDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + $ports.sort(function($p1, $p2) { + var x1 = controller($p1).deviceDef.x; + var y1 = controller($p1).deviceDef.y; + var x2 = controller($p2).deviceDef.x; + var y2 = controller($p2).deviceDef.y; + if (x1 == x2) { + return (y1 < y2)? -1 : 1; + } + return (x1 < x2)? -1 : 1; + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(portDef.label, + getDesc(outPort.getInputs()[0]) ); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(portDef.label, + getDesc(inPort.getOutput() ) ); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + }; + }; + + var createCustomLayoutDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + var intfs = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(); + intfs.push({ node : inPort, label : portDef.label, + desc : getDesc(outPort.getInputs()[0]) }); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(); + intfs.push({ node : outPort, label : portDef.label, + desc : getDesc(inPort.getOutput() ) }); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var layout = data.layout; + var cols = layout.cols; + var rows = layout.rows; + rows = ~~( (Math.max(1, rows) + 1) / 2) * 2; + cols = ~~( (Math.max(1, cols) + 1) / 2) * 2; + var updateIntf = function(intf, x, y, align) { + transform(intf.node.$ui, x, y); + if (!intf.$label) { + intf.$label = createLabel(intf.label). + attr('class', 'simcir-node-label'); + enableEvents(intf.$label, false); + intf.node.$ui.append(intf.$label); + } + if (align == 'right') { + intf.$label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + intf.$label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } else if (align == 'top') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', -6); + } else if (align == 'bottom') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', fontSize + 6); + } + }; + var doLayout = function() { + var x = 0; + var y = 0; + var w = unit * cols / 2; + var h = unit * rows / 2; + device.$ui.children('.simcir-device-label'). + attr({y : y + h + fontSize}); + device.$ui.children('.simcir-device-body'). + attr({x: x, y: y, width: w, height: h}); + $.each(intfs, function(i, intf) { + if (layout.nodes[intf.label] && + layout.nodes[intf.label].match(/^([TBLR])([0-9]+)$/) ) { + var off = +RegExp.$2 * unit / 2; + switch(RegExp.$1) { + case 'T' : updateIntf(intf, x + off, y, 'bottom'); break; + case 'B' : updateIntf(intf, x + off, y + h, 'top'); break; + case 'L' : updateIntf(intf, x, y + off, 'right'); break; + case 'R' : updateIntf(intf, x + w, y + off, 'left'); break; + } + } else { + transform(intf.node.$ui, 0, 0); + } + }); + }; + device.getSize = function() { + return {width: unit * cols / 2, height: unit * rows / 2}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + if (data.layout.hideLabelOnWorkspace) { + device.$ui.on('deviceAdd', function() { + device.$ui.children('.simcir-device-label').css('display', 'none'); + }).on('deviceRemove', function() { + device.$ui.children('.simcir-device-label').css('display', ''); + }); + } + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + doLayout(); + }; + }; + }; + + var factories = {}; + var defaultToolbox = []; + var registerDevice = function(type, factory, deprecated) { + if (typeof factory == 'object') { + if (typeof factory.layout == 'object') { + factory = createCustomLayoutDeviceRefFactory(factory); + } else { + factory = createDeviceRefFactory(factory); + } + } + factories[type] = factory; + if (!deprecated) { + defaultToolbox.push({type: type}); + } + }; + + var createScrollbar = function() { + + // vertical only. + var _value = 0; + var _min = 0; + var _max = 0; + var _barSize = 0; + var _width = 0; + var _height = 0; + + var $body = createSVGElement('rect'); + var $bar = createSVGElement('g'). + append(createSVGElement('rect') ). + attr('class', 'simcir-scrollbar-bar'); + var $scrollbar = createSVGElement('g'). + attr('class', 'simcir-scrollbar'). + append($body).append($bar). + on('unitup', function(event) { + setValue(_value - unit * 2); + }).on('unitdown', function(event) { + setValue(_value + unit * 2); + }).on('rollup', function(event) { + setValue(_value - _barSize); + }).on('rolldown', function(event) { + setValue(_value + _barSize); + }); + + var dragPoint = null; + var bar_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var pos = transform($bar); + dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + $(document).on('mousemove', bar_mouseMoveHandler); + $(document).on('mouseup', bar_mouseUpHandler); + }; + var bar_mouseMoveHandler = function(event) { + calc(function(unitSize) { + setValue( (event.pageY - dragPoint.y) / unitSize); + }); + }; + var bar_mouseUpHandler = function(event) { + $(document).off('mousemove', bar_mouseMoveHandler); + $(document).off('mouseup', bar_mouseUpHandler); + }; + $bar.on('mousedown', bar_mouseDownHandler); + var body_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var off = $scrollbar.parent('svg').offset(); + var pos = transform($scrollbar); + var y = event.pageY - off.top - pos.y; + var barPos = transform($bar); + if (y < barPos.y) { + $scrollbar.trigger('rollup'); + } else { + $scrollbar.trigger('rolldown'); + } + }; + $body.on('mousedown', body_mouseDownHandler); + + var setSize = function(width, height) { + _width = width; + _height = height; + layout(); + }; + var layout = function() { + + $body.attr({x: 0, y: 0, width: _width, height: _height}); + + var visible = _max - _min > _barSize; + $bar.css('display', visible? 'inline' : 'none'); + if (!visible) { + return; + } + calc(function(unitSize) { + $bar.children('rect'). + attr({x: 0, y: 0, width: _width, height: _barSize * unitSize}); + transform($bar, 0, _value * unitSize); + }); + }; + var calc = function(f) { + f(_height / (_max - _min) ); + }; + var setValue = function(value) { + setValues(value, _min, _max, _barSize); + }; + var setValues = function(value, min, max, barSize) { + value = Math.max(min, Math.min(value, max - barSize) ); + var changed = (value != _value); + _value = value; + _min = min; + _max = max; + _barSize = barSize; + layout(); + if (changed) { + $scrollbar.trigger('scrollValueChange'); + } + }; + var getValue = function() { + return _value; + }; + controller($scrollbar, { + setSize: setSize, + setValues: setValues, + getValue: getValue + }); + return $scrollbar; + }; + + var getUniqueId = function() { + var uniqueIdCount = 0; + return function() { + return 'simcir-id' + uniqueIdCount++; + }; + }(); + + var createWorkspace = function(data) { + + //console.log("In create workspace function"); + data = $.extend({ + width: 400, + height: 200, + showToolbox: true, + editable: true, + toolbox: defaultToolbox, + devices: [], + connectors: [], + }, data); + + var scope = {}; + + var workspaceWidth = data.width; + var workspaceHeight = data.height; + var barWidth = unit; + var toolboxWidth = data.showToolbox? unit * 6 + barWidth : 0; + + var connectorsValid = true; + var connectorsValidator = function() { + if (!connectorsValid) { + updateConnectors(); + connectorsValid = true; + } + }; + + var $workspace = createSVG( + workspaceWidth, workspaceHeight). + attr('class', 'simcir-workspace'). + on('nodeValueChange', function(event) { + connectorsValid = false; + window.setTimeout(connectorsValidator, 0); + }). + on('dispose', function() { + $(this).find('.simcir-device').trigger('dispose'); + $toolboxPane.remove(); + $workspace.remove(); + }); + + disableSelection($workspace); + + var $defs = createSVGElement('defs'); + $workspace.append($defs); + + !function() { + + // fill with pin hole pattern. + var patId = getUniqueId(); + var pitch = unit / 2; + var w = workspaceWidth - toolboxWidth; + var h = workspaceHeight; + + $defs.append(createSVGElement('pattern'). + attr({id: patId, x: 0, y: 0, + width: pitch / w, height: pitch / h}).append( + createSVGElement('rect').attr('class', 'simcir-pin-hole'). + attr({x: 0, y: 0, width: 1, height: 1}) ) ); + + $workspace.append(createSVGElement('rect'). + attr({x: toolboxWidth, y: 0, width: w, height: h}). + css({fill: 'url(#' + patId + ')'}) ); + }(); + + var $toolboxDevicePane = createSVGElement('g'); + var $scrollbar = createScrollbar(); + $scrollbar.on('scrollValueChange', function(event) { + transform($toolboxDevicePane, 0, + -controller($scrollbar).getValue() ); + }); + controller($scrollbar).setSize(barWidth, workspaceHeight); + transform($scrollbar, toolboxWidth - barWidth, 0); + var $toolboxPane = createSVGElement('g'). + attr('class', 'simcir-toolbox'). + append(createSVGElement('rect'). + attr({x: 0, y: 0, + width: toolboxWidth, + height: workspaceHeight}) ). + append($toolboxDevicePane). + append($scrollbar).on('wheel', function(event) { + event.preventDefault(); + var oe = event.originalEvent || event; + if (oe.deltaY < 0) { + $scrollbar.trigger('unitup'); + } else if (oe.deltaY > 0) { + $scrollbar.trigger('unitdown'); + } + }); + + var $devicePane = createSVGElement('g'); + transform($devicePane, toolboxWidth, 0); + var $connectorPane = createSVGElement('g'); + var $temporaryPane = createSVGElement('g'); + + enableEvents($connectorPane, false); + enableEvents($temporaryPane, false); + + if (data.showToolbox) { + $workspace.append($toolboxPane); + } + $workspace.append($devicePane); + $workspace.append($connectorPane); + $workspace.append($temporaryPane); + + var addDevice = function($dev) { + $devicePane.append($dev); + $dev.trigger('deviceAdd'); + }; + + var removeDevice = function($dev) { + $dev.trigger('deviceRemove'); + // before remove, disconnect all + controller($dev).disconnectAll(); + $dev.trigger('dispose'); + updateConnectors(); + }; + + var disconnect = function($inNode) { + var inNode = controller($inNode); + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + updateConnectors(); + }; + + var updateConnectors = function() { + $connectorPane.children().remove(); + $devicePane.children('.simcir-device').each(function() { + var device = controller($(this) ); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + var p1 = offset(inNode.$ui); + var p2 = offset(inNode.getOutput().$ui); + var $conn = createConnector(p1.x, p1.y, p2.x, p2.y); + if (inNode.getOutput().getValue() != null) { + $conn.addClass('simcir-connector-hot'); + } + $connectorPane.append($conn); + } + }); + }); + }; + + var loadToolbox = function(data) { + var vgap = 8; + var y = vgap; + $.each(data.toolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + $toolboxDevicePane.append($dev); + var size = controller($dev).getSize(); + transform($dev, (toolboxWidth - barWidth - size.width) / 2, y); + y += (size.height + fontSize + vgap); + }); + controller($scrollbar).setValues(0, 0, y, workspaceHeight); + }; + + var getData = function() { + //console.log("in getData function"); + // renumber all id + var devIdCount = 0; + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + var devId = 'dev' + devIdCount++; + device.id = devId; + $.each(device.getInputs(), function(i, node) { + node.id = devId + '.in' + i; + }); + $.each(device.getOutputs(), function(i, node) { + node.id = devId + '.out' + i; + }); + }); + + var toolbox = []; + var devices = []; + var connectors = []; + var clone = function(obj) { + return JSON.parse(JSON.stringify(obj) ); + }; + $toolboxDevicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + toolbox.push(device.deviceDef); + }); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + connectors.push({from:inNode.id, to:inNode.getOutput().id}); + } + }); + var pos = transform($dev); + var deviceDef = clone(device.deviceDef); + deviceDef.id = device.id; + deviceDef.x = pos.x; + deviceDef.y = pos.y; + deviceDef.label = device.getLabel(); + var state = device.getState(); + if (state != null) { + deviceDef.state = state; + } + devices.push(deviceDef); + }); + return { + width: data.width, + height: data.height, + showToolbox: data.showToolbox, + editable: data.editable, + toolbox: toolbox, + devices: devices, + connectors: connectors + }; + }; + var getText = function() { + //console.log("In getText function"); + + /*global dataFinal*/ + dataFinal = getData(); + var data = getData(); + + var buf = ''; + var print = function(s) { + buf += s; + }; + var println = function(s) { + print(s); + buf += '\r\n'; + }; + var printArray = function(array) { + $.each(array, function(i, item) { + println(' ' + JSON.stringify(item). + replace(//g, '\\u003e') + + (i + 1 < array.length? ',' : '') ); + }); + }; + println('{'); + println(' "width":' + data.width + ','); + println(' "height":' + data.height + ','); + println(' "showToolbox":' + data.showToolbox + ','); + println(' "toolbox":['); + printArray(data.toolbox); + println(' ],'); + println(' "devices":['); + printArray(data.devices); + println(' ],'); + println(' "connectors":['); + printArray(data.connectors); + println(' ]'); + print('}'); + return buf; + }; + + //------------------------------------------- + // mouse operations + + var dragMoveHandler = null; + var dragCompleteHandler = null; + + var adjustDevice = function($dev) { + //console.log("In adjust"); + var pitch = unit / 2; + var adjust = function(v) { return Math.round(v / pitch) * pitch; }; + var pos = transform($dev); + var size = controller($dev).getSize(); + var x = Math.max(0, Math.min(pos.x, + workspaceWidth - toolboxWidth - size.width) ); + var y = Math.max(0, Math.min(pos.y, + workspaceHeight - size.height) ); + transform($dev, adjust(x), adjust(y) ); + //deselectAll(); + getText(); + }; + + var beginConnect = function(event, $target) { + var $srcNode = $target.closest('.simcir-node'); + var off = $workspace.offset(); + var pos = offset($srcNode); + if ($srcNode.attr('simcir-node-type') == 'in') { + disconnect($srcNode); + } + dragMoveHandler = function(event) { + var x = event.pageX - off.left; + var y = event.pageY - off.top; + $temporaryPane.children().remove(); + $temporaryPane.append(createConnector(pos.x, pos.y, x, y) ); + }; + dragCompleteHandler = function(event) { + //console.log("drag connection complete"); + $temporaryPane.children().remove(); + var $dst = $(event.target); + if (isActiveNode($dst) ) { + var $dstNode = $dst.closest('.simcir-node'); + connect($srcNode, $dstNode); + updateConnectors(); + } + getText(); + }; + }; + + var beginNewDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = offset($dev); + $dev = createDevice(controller($dev).deviceDef, false, scope); + transform($dev, pos.x, pos.y); + $temporaryPane.append($dev); + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + transform($dev, + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete newdev"); + var $target = $(event.target); + if ($target.closest('.simcir-toolbox').length == 0) { + $dev.detach(); + var pos = transform($dev); + transform($dev, pos.x - toolboxWidth, pos.y); + adjustDevice($dev); + addDevice($dev); + } else { + $dev.trigger('dispose'); + } + getText(); + }; + }; + + var $selectedDevices = []; + var addSelected = function($dev) { + //console.log("selected"); + controller($dev).setSelected(true); + $selectedDevices.push($dev); + }; + var deselectAll = function() { + //console.log("deselectAll"); + $devicePane.children('.simcir-device').each(function() { + controller($(this) ).setSelected(false); + }); + $selectedDevices = []; + }; + + var beginMoveDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = transform($dev); + if (!controller($dev).isSelected() ) { + deselectAll(); + addSelected($dev); + // to front. + $dev.parent().append($dev.detach() ); + } + + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + // disable events while dragging. + enableEvents($dev, false); + var curPos = transform($dev); + var deltaPos = { + x: event.pageX - dragPoint.x - curPos.x, + y: event.pageY - dragPoint.y - curPos.y}; + $.each($selectedDevices, function(i, $dev) { + var curPos = transform($dev); + transform($dev, + curPos.x + deltaPos.x, + curPos.y + deltaPos.y); + }); + updateConnectors(); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete dev"); + var $target = $(event.target); + enableEvents($dev, true); + $.each($selectedDevices, function(i, $dev) { + if ($target.closest('.simcir-toolbox').length == 0) { + adjustDevice($dev); + updateConnectors(); + } else { + removeDevice($dev); + } + }); + getText(); + }; + }; + + var beginSelectDevice = function(event, $target) { + var intersect = function(rect1, rect2) { + return !( + rect1.x > rect2.x + rect2.width || + rect1.y > rect2.y + rect2.height || + rect1.x + rect1.width < rect2.x || + rect1.y + rect1.height < rect2.y); + }; + var pointToRect = function(p1, p2) { + return { + x: Math.min(p1.x, p2.x), + y: Math.min(p1.y, p2.y), + width: Math.abs(p1.x - p2.x), + height: Math.abs(p1.y - p2.y)}; + }; + deselectAll(); + var off = $workspace.offset(); + var pos = offset($devicePane); + var p1 = {x: event.pageX - off.left, y: event.pageY - off.top}; + dragMoveHandler = function(event) { + deselectAll(); + var p2 = {x: event.pageX - off.left, y: event.pageY - off.top}; + var selRect = pointToRect(p1, p2); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var devPos = transform($dev); + var devSize = controller($dev).getSize(); + var devRect = { + x: devPos.x + pos.x, + y: devPos.y + pos.y, + width: devSize.width, + height: devSize.height}; + if (intersect(selRect, devRect) ) { + addSelected($dev); + } + }); + $temporaryPane.children().remove(); + $temporaryPane.append(createSVGElement('rect'). + attr(selRect). + attr('class', 'simcir-selection-rect') ); + }; + }; + + var mouseDownHandler = function(event) { + //console.log("Mouse down"); + event.preventDefault(); + event.stopPropagation(); + var $target = $(event.target); + if (!data.editable) { + return; + } + if (isActiveNode($target) ) { + beginConnect(event, $target); + } else if ($target.closest('.simcir-device').length == 1) { + if ($target.closest('.simcir-toolbox').length == 1) { + beginNewDevice(event, $target); + } else { + beginMoveDevice(event, $target); + } + } else { + beginSelectDevice(event, $target); + } + $(document).on('mousemove', mouseMoveHandler); + $(document).on('mouseup', mouseUpHandler); + }; + var mouseMoveHandler = function(event) { + if (dragMoveHandler != null) { + dragMoveHandler(event); + } + }; + var mouseUpHandler = function(event) { + //console.log("Mouse up"); + if (dragCompleteHandler != null) { + dragCompleteHandler(event); + } + dragMoveHandler = null; + dragCompleteHandler = null; + $devicePane.children('.simcir-device').each(function() { + enableEvents($(this), true); + }); + $temporaryPane.children().remove(); + $(document).off('mousemove', mouseMoveHandler); + $(document).off('mouseup', mouseUpHandler); + getText(); + }; + $workspace.on('mousedown', mouseDownHandler); + + //------------------------------------------- + // + + loadToolbox(data); + $.each(buildCircuit(data, false, scope), function(i, $dev) { + addDevice($dev); + }); + updateConnectors(); + controller($workspace, { + data: getData, + text: getText + }); + getText(); + return $workspace; + }; + + var clearSimcir = function($placeHolder) { + $placeHolder = $($placeHolder[0]); + $placeHolder.find('.simcir-workspace').trigger('dispose'); + $placeHolder.children().remove(); + return $placeHolder; + }; + + var setupSimcir = function($placeHolder, data) { + + $placeHolder = clearSimcir($placeHolder); + + var $workspace = simcir.createWorkspace(data); + var $dataArea = $(''). + addClass('simcir-json-data-area'). + attr('readonly', 'readonly'). + css('width', $workspace.attr('width') + 'px'). + css('height', $workspace.attr('height') + 'px'); + var showData = false; + var toggle = function() + { + $workspace.css('display', !showData? 'inline' : 'none'); + $dataArea.css('display', showData? 'inline' : 'none'); + if (showData) { + $dataArea.val(controller($workspace).text() ).focus(); + } + showData = !showData; + }; + $placeHolder.text(''); + $placeHolder.append($('
    '). + addClass('simcir-body'). + append($workspace). + append($dataArea). + on('click', function(event) { + if (event.ctrlKey || event.metaKey) { + toggle(); + } + })); + toggle(); + return $placeHolder; + }; + + var setupSimcirDoc = function($placeHolder) { + var $table = $('
    '). + addClass('simcir-doc-table'); + $.each(defaultToolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + var device = controller($dev); + if (!device.doc) { + return; + } + var doc = $.extend({description: '', params: []},device.doc); + var size = device.getSize(); + + var $tr = $(''); + var hgap = 32; + var vgap = 8; + var $view = createSVG(size.width + hgap * 2, + size.height + vgap * 2 + fontSize); + var $dev = createDevice(deviceDef); + transform($dev, hgap, vgap); + + $view.append($dev); + $tr.append($('').css('text-align', 'center').append($view) ); + var $desc = $(''); + $tr.append($desc); + + if (doc.description) { + $desc.append($(''). + text(doc.description) ); + } + + $desc.append($('
    Params
    ').addClass('simcir-doc-title') ); + var $paramsTable = $('
    '). + addClass('simcir-doc-params-table'); + $paramsTable.children('tbody').append($(''). + append($('Name') ). + append($('Type') ). + append($('Default') ). + append($('Description') ) ); + $paramsTable.children('tbody').append($(''). + append($('type') ). + append($('string') ). + append($('-'). + css('text-align', 'center') ). + append($('"' + deviceDef.type + '"') ) ); + if (!doc.labelless) { + $paramsTable.children('tbody').append($(''). + append($('label') ). + append($('string') ). + append($('same with type').css('text-align', 'center') ). + append($('label for a device.') ) ); + } + if (doc.params) { + $.each(doc.params, function(i, param) { + $paramsTable.children('tbody').append($(''). + append($('').text(param.name) ). + append($('').text(param.type) ). + append($('').css('text-align', 'center'). + text(param.defaultValue) ). + append($('').text(param.description) ) ); + }); + } + $desc.append($paramsTable); + + if (doc.code) { + $desc.append($('
    Code
    ').addClass('simcir-doc-title') ); + $desc.append($('
    '). + addClass('simcir-doc-code').text(doc.code) ); + } + + $table.children('tbody').append($tr); + }); + + $placeHolder.append($table); + }; + + $(function() { + $('.simcir').each(function() { + var $placeHolder = $(this); + var text = $placeHolder.text().replace(/^\s+|\s+$/g, ''); + setupSimcir($placeHolder, JSON.parse(text || '{}') ); + }); + }); + + $(function() { + $('.simcir-doc').each(function() { + setupSimcirDoc($(this) ); + }); + }); + + $.extend($s, { + registerDevice: registerDevice, + clearSimcir: clearSimcir, + setupSimcir: setupSimcir, + createWorkspace: createWorkspace, + createSVGElement: createSVGElement, + offset: offset, + transform: transform, + enableEvents: enableEvents, + graphics: graphics, + controller: controller, + unit: unit + }); +}(simcir); + +// +// built-in devices +// +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + out1.setValue(in1.getValue() ); + } + }; + }; + + var createPortFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var cx = size.width / 2; + var cy = size.height / 2; + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 2}). + attr('class', 'simcir-port simcir-node-type-' + type) ); + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 4}). + attr('class', 'simcir-port-hole') ); + }; + }; + }; + + var createJointFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + // register built-in devices + $s.registerDevice('In', createPortFactory('in') ); + $s.registerDevice('Out', createPortFactory('out') ); + $s.registerDevice('Joint', createJointFactory() ); + +}(simcir); diff --git a/project2/Procedure_Documentation.md b/project2/Procedure_Documentation.md new file mode 100644 index 00000000..5f990bfc --- /dev/null +++ b/project2/Procedure_Documentation.md @@ -0,0 +1,23 @@ +# Project Documentation + +## Introduction + +This document captures the instructions to run the simulation. + +## Instructions: + +1. Click on the simLayout.html file to see the simulator. + +2. Choose what you want to simulate under the _Select the simulation_ heading. + +3. Now you can either see the circuit for positive and negative level pass transistor or follow the procedure to design it. + +4. The multiplexer circuit can be designed through the procedure as well. + +5. Clicking on the procedure tab will open a procedure window on the right. Click on the _Select the circuit_ heading to see the procedure for each circuit. + +6. Click on the _Simulator Help_ heading to see instructions on how to use the simulator. + +7. Once your circuit is done, click on the _Simulate_ button to observe the waveform below the workspace. + +8. To read the theory behind the experiment click on the _Project Documentation_ heading. \ No newline at end of file diff --git a/project3/Codes/Code_Documentation.md b/project3/Codes/Code_Documentation.md new file mode 100644 index 00000000..c2437b59 --- /dev/null +++ b/project3/Codes/Code_Documentation.md @@ -0,0 +1,34 @@ +# Code Documentation + +## Introduction + +This document captures the experiment implementation details. + +## Code Details + +1. **File name:** simLayout.html + **File description:** Contains the layout of the circuit simulator. + +2. **File name:** layout.css + **File description:** Contains the css of the simulator. + +3. **File name:** simulatorOptions.js + **File description:** Contains the jquery to enable the different options contained in the main simulator file. + +4. **File name:** circuitCheck.js + **File description:** Contains the functions necessary to check if the circuit made on the simulator is correct and if all the connections and components are correct. + + * **Function name:** circCheck() + **Function description:** This retreives the circuit data and checks if it is the same as a preset circuit data. + + * **Function name:** isEqual() + **Function description:** This checks if two objects are equal. + +5. **File name:** Procedure.html + **File description:** Contains the procedure to run each simualtion. + +6. **File name:** project_doc.html + **File description:** Contains the theory behind the experiment. + +7. **File name:** project_doc_style.html + **File description:** Contains the css for the project_doc.html. \ No newline at end of file diff --git a/project3/Codes/Experiment_Project_Documentation.md b/project3/Codes/Experiment_Project_Documentation.md new file mode 100644 index 00000000..b96d3f60 --- /dev/null +++ b/project3/Codes/Experiment_Project_Documentation.md @@ -0,0 +1,71 @@ +# Experiment Project Documentation + +## Introduction + +This document captures the technical details related to the experiment development. + +## Project +**Domain name:** Computer Science & Engineering. +**Lab name:** Very Large Scale Integration. +**Experiment name:** Schematic Design Of Transistor Level NAND & NOR Gate. + +Pass transistor logic (PTL) describes several logic families used in the design of integrated circuits. It reduces the count of transistors used to make different logic gates, by eliminating redundant transistors. Transistors are used as switches to pass logic levels between nodes of a circuit, instead of as switches connected directly to supply voltages. + +This reduces the number of active devices, but has the disadvantage that the difference of the voltage between high and low logic levels decreases at each stage. Each transistor in series is less saturated at its output than at its input. + +This experiment is used to simulate the working of a NAND and NOR gate using pass transistor logic. A graph is generated which shows the output of the simulation. + +## Purpose of the Project + +The purpose of this project is to convert NAND and NOR gate simulation from Java to Javascript. + +## Project Developers Details + +| Sl.no | Name | Year Of Study | Role | Email-ID | Github handle | +|:-----:|:-----------------:|:-------------:|:---------:|:---------------------------:|:-------------:| +| 1 | Utkarsh Chhapekar | 2nd year | Developer | utkarshchhapekar2@gmail.com | Utkichaps | + +## Technologies and Libraries + +**Technologies:** +1. HTML +2. CSS +3. Javascript + +**Libraries:** +1. SimCir JS +2. JQuery +3. Bootstrap + +## Development Environment + +**OS:** Ubuntu 19.04 + +## Documents and Files: + +| Sl.no | Document | Role | +|:-----:|:------------------:|:------------------------------------------------------------------------------:| +| 1. | Procedure | This document captures the instructions to run the simulations | +| 2. | Test Cases | This document captures the functional test cases of the experiment simulation | +| 3. | Code Documentation | This document captures the details related to code | +| Sl.no | File | Role | +| 1. | Codes | Contains the major code as well as the images related to it. | +| 2. | Libraries | Contains libraries used by the code | + +## Process Followed to convert the experiment + +1. Understand the assigned experiment Java simulation. +2. Understanding the experiment concept. +3. Re-implement the same in javascript. + +## Value Added by our Project + +It is beneficial to engineering students who want to understand how pass transistor logic can be used to simulate universal gates and to understand the theory behind it as well. + +## Risks and Challenges + +A few challenges faced during the development process was understanding the simcir library so that it can be used to retrieve the circuit data dynamically. Adding components was also an issue. + +## Issues + +No current issues open. diff --git a/project3/Codes/Experiment_Test_Cases_Documentation.md b/project3/Codes/Experiment_Test_Cases_Documentation.md new file mode 100644 index 00000000..525e79d8 --- /dev/null +++ b/project3/Codes/Experiment_Test_Cases_Documentation.md @@ -0,0 +1,22 @@ +# Experiment Test Cases Documentation + +## Introduction + +This document captures the test cases of the experiment. + +## Functional Test Cases + +| Test Case id | Test Scenario | Test Steps | Expected Output | Actual Output | Result | +|:------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:------:| +| 1. | Press Simulate button without selecting what type of simulation | Directly click on simulate without selecting the type of simulation. | Alert: Please select type of simulation | Alert: Please select type of simulation | pass | +| 2. | Press Simulate button with mismatched circuit and simulation option. | Choose a simulation and make a circuit which is not the same as the simulation option. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | +| 3. | Alert when the connections/components are wrong. | Make an incorrect circuit and try to simulate it. | Alert: This is not the correct circuit. Please refer procedure carefully | Alert: This is not the correct circuit. Please refer procedure carefully | pass | +| 4. | Graph should get cleared after simulating a wrong circuit. | Simulate a correct circuit and then simulate a wrong circuit | The graph of the previous simulation should not show. | The graph of the previous simulation should not show. | pass | + +## Cross Browser Testing + +| Sl.no | Browser | Version | Works? | +|-------|-----------------|---------------|--------| +| 1. | Google Chrome | 75.0.3770.100 | Yes | +| 2. | Mozilla Firefox | 67.0.4 | yes | + diff --git a/project3/Codes/Images/NAND.png b/project3/Codes/Images/NAND.png new file mode 100644 index 00000000..eaabdb2a Binary files /dev/null and b/project3/Codes/Images/NAND.png differ diff --git a/project3/Codes/Images/NOR.png b/project3/Codes/Images/NOR.png new file mode 100644 index 00000000..10c017df Binary files /dev/null and b/project3/Codes/Images/NOR.png differ diff --git a/project3/Codes/Images/blank.png b/project3/Codes/Images/blank.png new file mode 100644 index 00000000..e48514f5 Binary files /dev/null and b/project3/Codes/Images/blank.png differ diff --git a/project3/Codes/Images/label.png b/project3/Codes/Images/label.png new file mode 100644 index 00000000..5248f877 Binary files /dev/null and b/project3/Codes/Images/label.png differ diff --git a/project3/Codes/Images/nand1.png b/project3/Codes/Images/nand1.png new file mode 100644 index 00000000..661bf482 Binary files /dev/null and b/project3/Codes/Images/nand1.png differ diff --git a/project3/Codes/Images/nandkmap.png b/project3/Codes/Images/nandkmap.png new file mode 100644 index 00000000..5bb93a7a Binary files /dev/null and b/project3/Codes/Images/nandkmap.png differ diff --git a/project3/Codes/Images/nor1.png b/project3/Codes/Images/nor1.png new file mode 100644 index 00000000..459c97a9 Binary files /dev/null and b/project3/Codes/Images/nor1.png differ diff --git a/project3/Codes/Images/norkmap.png b/project3/Codes/Images/norkmap.png new file mode 100644 index 00000000..84e1876f Binary files /dev/null and b/project3/Codes/Images/norkmap.png differ diff --git a/project3/Codes/Images/parallel.png b/project3/Codes/Images/parallel.png new file mode 100644 index 00000000..636e9500 Binary files /dev/null and b/project3/Codes/Images/parallel.png differ diff --git a/project3/Codes/Images/series.png b/project3/Codes/Images/series.png new file mode 100644 index 00000000..b35d8ea7 Binary files /dev/null and b/project3/Codes/Images/series.png differ diff --git a/project3/Codes/Images/trans.png b/project3/Codes/Images/trans.png new file mode 100644 index 00000000..90da9892 Binary files /dev/null and b/project3/Codes/Images/trans.png differ diff --git a/project3/Codes/Procedure.html b/project3/Codes/Procedure.html new file mode 100644 index 00000000..004fe27b --- /dev/null +++ b/project3/Codes/Procedure.html @@ -0,0 +1,110 @@ + + + + Procedure + + + + +
    +

    Procedure

    + +
    +
    + +

    Components which will be used for this:PMOS, NMOS, Input, Output, Vdd, GND, Capacitor, Joint, OJoint.


    + Steps: +
      +
    1. Select NAND Gate from the option on the top of the page, under the heading.
    2. +
    3. Connect two PMOS in parallel, in between Vdd and 3 input OR. To do so: +
        +
      • Place two PMOS on the workspace.
      • +
      • Connect drain of first PMOS to output of a Joint and connect that to drain of second PMOS.
      • +
      • Connect Vdd to the input of the above mentioned Joint.
      • +
      • Connect source of first PMOS to an OJoint and connect that to source of second PMOS.
      • +
      • Connect the above OJoint to the first input of the OR gate.
      • +
      +
    4. +
    5. + Connect two NMOS in series, in between the 3 input OR and GND. To do so: +
        +
      • Place two NMOS on the workspace.
      • +
      • Connect the second input of the OR gate to an OJoint and connect that to the drain of the first NMOS.
      • +
      • Connect the Source of first NMOS to an OJoint and connect that to Drain of Second NMOS.
      • +
      • Connect the Drain of the Second NMOS to GND.
      • +
      +
    6. +
    7. Connect the GND to input of a capacitor and connect the output of that capacitor to the third input of the OR gate.
    8. +
    9. Connect the output of the OR gate to an Out Component.
    10. +
    11. Take one In component and connect it to gate of first PMOS and gate of first NMOS.
    12. +
    13. Take another In component and connect it to gate of second PMOS and gate of second NMOS
    14. +
    15. Click on Simulate and observe the graph on the right.
    16. +
    +
    +
    + +

    Components which will be used for this:PMOS, NMOS, Input, Output, Vdd, GND, Capacitor, Joint, OJoint.


    + Steps: +
      +
    1. Select NOR Gate from the option on the top of the page, under the heading.
    2. +
    3. + Connect two PMOS in series, in between Vdd and 3 input OR. To do so: +
        +
      • Place two PMOS on the workspace.
      • +
      • Connect Vdd to the drain of the first PMOS.
      • +
      • Connect the source of the first PMOS to an OJoint and connect that to the drain of the second PMOS.
      • +
      • Connect the source of the second PMOS to another OJoint and connect that to the first input of the OR Gate.
      • +
      +
    4. +
    5. + Connect two NMOS in parallel, in between 3 input OR and GND. To do so: +
        +
      • Place two NMOS on the workspace.
      • +
      • Connect the drain of first NMOS to an OJoint and connect that to the drain of the second NMOS.
      • +
      • Connect the second input of the OR gate to the above mentioned OJoint.
      • +
      • Connect the source of the first NMOS to the output of a Joint and connect that to the source of the second NMOS.
      • +
      • Connect the input of the above mentioned Joint to a GND.
      • +
      +
    6. +
    7. Connect the GND to input of a capacitor and connect the output of that capacitor to the third input of the OR gate.
    8. +
    9. Connect the output of the OR gate to an Out Component.
    10. +
    11. Take one In component and connect it to gate of first PMOS and gate of first NMOS.
    12. +
    13. Take another In component and connect it to gate of second PMOS and gate of second NMOS
    14. +
    15. Click on Simulate and observe the graph on the right.
    16. +
    +
    + + + + \ No newline at end of file diff --git a/project3/Codes/Procedure_Documentation.md b/project3/Codes/Procedure_Documentation.md new file mode 100644 index 00000000..719484aa --- /dev/null +++ b/project3/Codes/Procedure_Documentation.md @@ -0,0 +1,21 @@ +# Project Documentation + +## Introduction + +This document captures the instructions to run the simulation. + +## Instructions: + +1. Click on the simLayout.html file to see the simulator. + +2. Choose what you want to simulate under the _Select the simulation_ heading. + +3. Now you can either see the circuit for NAND and NOR under the _See Circuit:_ heading or follow the procedure to design it. + +4. Clicking on the procedure tab will open a procedure window on the right. Click on the _Select the circuit_ heading to see the procedure for each circuit. + +5. Click on the _Simulator Help_ heading to see instructions on how to use the simulator. + +6. Once your circuit is done, click on the _Simulate_ button to observe the graph to the right of the workspace. + +7. To read the theory behind the experiment click on the _Project Documentation_ heading. \ No newline at end of file diff --git a/project3/Codes/Readme.txt b/project3/Codes/Readme.txt new file mode 100644 index 00000000..4261b79a --- /dev/null +++ b/project3/Codes/Readme.txt @@ -0,0 +1,19 @@ +SRIP + +VLSI | issue no 379 | Design Of Transistor Level NAND & NOR Gate + +--------------------------------------------------------------------- + +Simulator: +The simulator can be accessed by clicking on the simLayout.html file. +The Project documentation is in the project_doc.html file. + +Files used by the simulator: +simLayout.html +Procedure.html +layout.css +simulatorOptions.js +circuitCheck.js + + + diff --git a/project3/Codes/circuitCheck.js b/project3/Codes/circuitCheck.js new file mode 100644 index 00000000..ee0058cf --- /dev/null +++ b/project3/Codes/circuitCheck.js @@ -0,0 +1,159 @@ +function circCheck() +{ + //console.log(JSON.stringify(dataFinal.devices)); + //console.log(JSON.stringify(dataFinal.connectors)); + /*global dataFinal*/ + var dev = dataFinal.devices; + /*global dataFinal*/ + var con = dataFinal.connectors; + //console.log(dev.length); + //console.log(con.length); + //console.log(document.getElementById("whichSim").value); + var opt = document.getElementById("whichSim").value; + var devic = new Object(); + var connec = new Object(); + connec = {}; + devic = {}; + //Main parsing done here: + for(var i = 0;i + + + Documentation + + + +

    Schematic Design Of Transistor Level NAND & NOR Gate

    + +

    Introduction

    + +

    Definition of NAND Gate

    +

    + NAND gate has 1 output and 2 or more inputs. + The output of the NAND gate is low only when all the inputs are high else it is low.
    + A NAND gate could be veiwed as an AND gate with inverter at the output.
    +

    + +

    Schematic and truth table of NAND Gate:

    + + +

    Definition of NOR Gate

    +

    + NOR gate has 1 output and 2 or more input + The output of NOR gate is high only when all the inputs are low else it is high.
    + A NOR gate could be viewed as an OR gate with inverter at the output.
    +

    + +

    Schematic and truth table of NOR Gate:

    + + +

    Theory

    + +

    Switching behaviour of transistor

    +

    + The gate of the MOS transistor controls the passage of the current between the drain and source. If the voltage at the gate is
    Vdd, no current flows between the drain and source of PMOS and same is the case with NMOS if its gate is grounded. This
    characteristic of MOS transistors, enables it to be viewed as a switch. The switching behaviour of nmos and pmos device is
    + shown in the figure below. Here the input 0 indicates that the gate is grounded and input 1 indicates that Vdd is applied to the gate:
    + +

    +

    Series and Parallel Connection

    +

    + The transistor level schematic of any combinational logic can be obtained by placing two or more n/p-switches in series or parallel.
    + + If switches are connected in series then the composite switch hence constructed is closed when both the switches are closed.
    + The series connection is shown in the figure below.The table indicates the states of the switch contructed by series connection
    depending on the inputs A and B.
    +
    + If the switches are connected in parallel then the composite switch hence constructed is closed when either or both of the
    switches are closed.The parallel connection is shown in the figure below.The table indicates the states of the switch
    + obtained by parallel connection depending on the inputs A and B.
    + +

    +

    K-Map for NAND

    +

    +
    + Thus for NAND gate PMOS devices are connected in parallel between Vdd and output node, whereas the NMOS devices are in series
    + between output node and ground. +

    +

    K-Map for NOR

    +

    +
    + Thus for NOR gate PMOS devices are connected in series between Vdd and output node,whereas the NMOS devices are in parallel
    between output node and ground. +

    + + + \ No newline at end of file diff --git a/project3/Codes/project_doc_style.css b/project3/Codes/project_doc_style.css new file mode 100644 index 00000000..945bf096 --- /dev/null +++ b/project3/Codes/project_doc_style.css @@ -0,0 +1,23 @@ +body { + text-align: center; + background-color: cornsilk; +} + +p { + font-family: sans-serif; +} + +h1 { + font-size: 3.5em; + background-color: burlywood; +} + +h2 { + background-color: wheat; + font-size: 2em; +} + +h3 { + background-color: blanchedalmond; + font-family: monospace; +} \ No newline at end of file diff --git a/project3/Codes/simLayout.html b/project3/Codes/simLayout.html new file mode 100644 index 00000000..f580224f --- /dev/null +++ b/project3/Codes/simLayout.html @@ -0,0 +1,129 @@ + + + + + + Simulator + + + + + + + + + + + + + + + +
    +

    Simulator

    +

    + +

    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/project3/Codes/simulatorOptions.js b/project3/Codes/simulatorOptions.js new file mode 100644 index 00000000..f00b34c0 --- /dev/null +++ b/project3/Codes/simulatorOptions.js @@ -0,0 +1,178 @@ +if(sessionStorage.getItem("MUX")) +{ + var val = sessionStorage.getItem("MUX"); + var opti = $("#whichSim option[value=\'" + val + "\']").text(); + $("#whichSim").append(""); +} +if(sessionStorage.getItem("PPT")) +{ + var dfl = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":384,"y":72,"label":"PMOS"}, + {"type":"PMOS","id":"dev1","x":152,"y":72,"label":"PMOS"}, + {"type":"DC","label":"Vdd","id":"dev2","x":232,"y":8}, + {"type":"Joint","id":"dev3","x":264,"y":72,"label":"Joint","state":{"direction":0}}, + {"type":"OJoint","id":"dev4","x":256,"y":104,"label":"OJoint","state":{"direction":0}}, + {"type":"OR","numInputs":3,"id":"dev5","x":376,"y":184,"label":"OR"}, + {"type":"Out","id":"dev6","x":464,"y":184,"label":"Out"}, + {"type":"OJoint","id":"dev7","x":216,"y":200,"label":"OJoint","state":{"direction":3}}, + {"type":"NMOS","id":"dev8","x":224,"y":240,"label":"NMOS"}, + {"type":"NMOS","id":"dev9","x":224,"y":352,"label":"NMOS"}, + {"type":"OJoint","id":"dev10","x":216,"y":312,"label":"OJoint","state":{"direction":1}}, + {"type":"GND","id":"dev11","x":192,"y":448,"label":"GND"}, + {"type":"In","id":"dev12","x":48,"y":168,"label":"In"}, + {"type":"In","id":"dev13","x":48,"y":264,"label":"In"}, + {"type":"CAP","label":"Capacitor","id":"dev14","x":344,"y":448} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev0.in1","to":"dev13.out0"}, + {"from":"dev0.in2","to":"dev4.out0"}, + {"from":"dev1.in0","to":"dev3.out0"}, + {"from":"dev1.in1","to":"dev12.out0"}, + {"from":"dev1.in2","to":"dev4.out0"}, + {"from":"dev3.in0","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev7.out0"}, + {"from":"dev5.in2","to":"dev14.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev7.out0"}, + {"from":"dev8.in1","to":"dev12.out0"}, + {"from":"dev8.in2","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev10.out0"}, + {"from":"dev9.in1","to":"dev13.out0"}, + {"from":"dev9.in2","to":"dev11.out0"}, + {"from":"dev14.in0","to":"dev11.out0"} + ] +}; + var html1=JSON.stringify(dfl); + document.querySelector(".simcir").innerHTML=html1; +} +else if(sessionStorage.getItem("NPT")) +{ + var dfli = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ], + "devices":[ + {"type":"OJoint","id":"dev0","x":264,"y":152,"label":"OJoint","state":{"direction":1}}, + {"type":"PMOS","id":"dev1","x":272,"y":72,"label":"PMOS"}, + {"type":"DC","label":"Vdd","id":"dev2","x":240,"y":16}, + {"type":"PMOS","id":"dev3","x":272,"y":200,"label":"PMOS"}, + {"type":"OJoint","id":"dev4","x":272,"y":288,"label":"OJoint","state":{"direction":2}}, + {"type":"OR","numInputs":3,"id":"dev5","x":400,"y":288,"label":"OR"}, + {"type":"Out","id":"dev6","x":496,"y":288,"label":"Out"}, + {"type":"OJoint","id":"dev7","x":248,"y":352,"label":"OJoint","state":{"direction":0}}, + {"type":"NMOS","id":"dev8","x":160,"y":352,"label":"NMOS"}, + {"type":"NMOS","id":"dev9","x":336,"y":352,"label":"NMOS"}, + {"type":"Joint","id":"dev10","x":248,"y":384,"label":"Joint","state":{"direction":0}}, + {"type":"GND","id":"dev11","x":216,"y":440,"label":"GND"}, + {"type":"CAP","label":"Capacitor","id":"dev12","x":368,"y":440}, + {"type":"In","id":"dev13","x":80,"y":160,"label":"In"}, + {"type":"In","id":"dev14","x":80,"y":288,"label":"In"} + ], + "connectors":[ + {"from":"dev1.in0","to":"dev2.out0"}, + {"from":"dev1.in1","to":"dev13.out0"}, + {"from":"dev1.in2","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev14.out0"}, + {"from":"dev3.in2","to":"dev4.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev7.out0"}, + {"from":"dev5.in2","to":"dev12.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev7.out0"}, + {"from":"dev8.in1","to":"dev13.out0"}, + {"from":"dev8.in2","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev14.out0"}, + {"from":"dev9.in2","to":"dev10.out0"}, + {"from":"dev10.in0","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev11.out0"} + ] +}; + var html2=JSON.stringify(dfli); + document.querySelector(".simcir").innerHTML=html2; + +} +else +{ + var obj = {}; + obj = { + "width":730, + "height":525, + "showToolbox":true, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"DC","label":"Vdd"}, + {"type":"CAP","label":"Capacitor"}, + {"type":"GND"}, + {"type":"Joint"}, + {"type":"OR","numInputs":3}, + {"type":"OJoint"} + ] + + }; + + var html=JSON.stringify(obj); + document.querySelector(".simcir").innerHTML=html; +} + +$("#procedure").click(function() { + $("#proc").toggle(); +}); + +$("#dfli").click(function(event) { + sessionStorage.setItem("PPT",1); + sessionStorage.removeItem("NPT"); + location.reload(); +}); + +$("#dfl").click(function(event) { + sessionStorage.setItem("NPT",1); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#clear").click(function(event) { + sessionStorage.removeItem("NPT"); + sessionStorage.removeItem("PPT"); + location.reload(); +}); + +$("#whichSim").change(function(event) { + var opt = document.getElementById("whichSim").value; + sessionStorage.setItem("MUX",opt); + location.reload(); +}); \ No newline at end of file diff --git a/project3/Libraries/Bootstrap/bootstrap.bundle.min.js b/project3/Libraries/Bootstrap/bootstrap.bundle.min.js new file mode 100644 index 00000000..43203684 --- /dev/null +++ b/project3/Libraries/Bootstrap/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),h=0l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)r(o.top)||"bottom"===_&&r(i.top)r(g.right),c=r(i.top)r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:''}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||tcode{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/project3/Libraries/Readme.txt b/project3/Libraries/Readme.txt new file mode 100644 index 00000000..964c4cb9 --- /dev/null +++ b/project3/Libraries/Readme.txt @@ -0,0 +1,5 @@ +Libraries used: + +Jquery +SimCir JS +Bootstrap diff --git a/project3/Libraries/jquery-3.4.1.min.js b/project3/Libraries/jquery-3.4.1.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/project3/Libraries/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + simcirjs + + + + + + + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/project3/Libraries/simcirjs/LICENSE b/project3/Libraries/simcirjs/LICENSE new file mode 100644 index 00000000..fba3333e --- /dev/null +++ b/project3/Libraries/simcirjs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2014 Kazuhiko Arase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/project3/Libraries/simcirjs/README.txt b/project3/Libraries/simcirjs/README.txt new file mode 100644 index 00000000..ce11a166 --- /dev/null +++ b/project3/Libraries/simcirjs/README.txt @@ -0,0 +1,9 @@ +SimcirJS + +Copyright (c) 2014 Kazuhiko Arase + +URL: http://www.d-project.com/ + +Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + diff --git a/project3/Libraries/simcirjs/misc/simcir-altfulladder.js b/project3/Libraries/simcirjs/misc/simcir-altfulladder.js new file mode 100644 index 00000000..1cb8d588 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir-altfulladder.js @@ -0,0 +1,57 @@ +// +// SimcirJS - altfulladder +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// This file describes how to customize the layout of library. +// + +// includes following device types: +// AltFullAdder + +simcir.registerDevice('AltFullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "layout":{"rows":8,"cols":8,"hideLabelOnWorkspace":true, + "nodes":{"A":"T2","B":"T6","S":"B4","Cin":"R4","Cout":"L4"}}, + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); diff --git a/project3/Libraries/simcirjs/misc/simcir-delay.js b/project3/Libraries/simcirjs/misc/simcir-delay.js new file mode 100644 index 00000000..02747e33 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir-delay.js @@ -0,0 +1,224 @@ +// +// SimcirJS - Delay +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Delay + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1, delay) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + var value = in1.getValue(); + window.setTimeout(function() { out1.setValue(value); }, delay); + } + }; + }; + + var createDelayFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var defaultDelay = 50; + var defaultDelayColor = '#ff0000'; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var delay = Math.max(0, device.deviceDef.delay || defaultDelay); + var color = device.deviceDef.color || defaultDelayColor; + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1, delay); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector').css('stroke', color); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + labelless: true, + params: [ + {name: 'delay', type: 'number', + defaultValue: defaultDelay, + description: 'time delay in milli-seconds.'}, + {name: 'color', type: 'string', + defaultValue: defaultDelayColor, + description: 'color in hexadecimal.'}], + code: '{"type":"' + device.deviceDef.type + '","delay":50}' + }; + }; + }; + }; + + $s.registerDevice('Delay', createDelayFactory() ); + +}(simcir); diff --git a/project3/Libraries/simcirjs/misc/simcir-dso.js b/project3/Libraries/simcirjs/misc/simcir-dso.js new file mode 100644 index 00000000..97b1d0f0 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir-dso.js @@ -0,0 +1,406 @@ +// +// SimcirJS - DSO +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DSO + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createDSOFactory = function() { + + var colors = [ + '#ff00cc', + '#ffcc00', + '#ccff00', + '#00ffcc', + '#00ccff', + '#cc00ff' + ]; + var timeRanges = [10000, 5000, 2000, 1000]; + var maxTimeRange = timeRanges[0]; + + var createProbe = function(color) { + + var samples = []; + + var model = { + valueRange : 1, + timeRange : maxTimeRange + }; + + var $path = $s.createSVGElement('path'). + css('fill', 'none'). + css('stroke-width', 1). + css('stroke-linejoin', 'bevel'). + css('stroke', color); + + var setValueRange = function(valueRange) { + model.valueRange = valueRange; + }; + + var setTimeRange = function(timeRange) { + model.timeRange = timeRange; + }; + + var update = function(ts, x, y, width, height) { + var d = ''; + for (var i = samples.length - 1; i >= 0; i -= 1) { + var last = i - 1 >= 0 && ts - samples[i - 1].ts > model.timeRange; + var val = samples[i].value; + if (!last && i > 0 && i + 1 < samples.length && + samples[i - 1].value === val && + samples[i + 1].value === val) { + continue; + } + if (typeof val != 'number') { + val = 0; + } + var sx = x + width - (ts - samples[i].ts) / model.timeRange * width; + var sy = y + height - val / model.valueRange * height; + d += d == ''? 'M' : 'L'; + d += sx + ' ' + sy; + if (last) { + break; + } + } + $path.attr('d', d); + }; + + var sample = function(ts, value) { + samples.push({ts: ts, value: value}); + while (ts - samples[0].ts > maxTimeRange) { + samples.shift(); + } + }; + + return { + $ui : $path, + setValueRange : setValueRange, + setTimeRange : setTimeRange, + update : update, + sample : sample + }; + }; + + var createPanel = function() { + + var $lcd = $s.createSVGElement('path'). + css('stroke', 'none').css('fill', '#ffcc00'); + var setLCDText = function(text) { + $lcd.attr('d', createFontPath(text, 4, 4, 1) ); + }; + var $lcdPanel = $s.createSVGElement('g'). + append($s.createSVGElement('rect'). + css('stroke', 'none'). + css('fill', '#000000'). + //size of time range window + attr({x : 0, y : 0, width: unit * 7, height : unit}) ). + append($lcd). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('timeRangeDown'); + }); + $s.transform($lcdPanel, unit * 1.5, 0); + + var $playing = $s.createSVGElement('path'). + attr('d', 'M' + unit / 4 + ' ' + unit / 4 + + 'L' + unit / 4 * 3 + ' ' + unit / 2 + + 'L' + unit / 4 + ' ' + unit / 4 * 3 + 'Z'). + css('stroke-width', 1); + var btnAttr = {x : 0, y : 0, width : unit, height : unit, + rx : 1, ry : 1}; + var $btnRect = $s.createSVGElement('rect'). + attr(btnAttr). + css('stroke', 'none'). + css('fill', '#999999'). + css('opacity', 0); + var $btn = $s.createSVGElement('g'). + append($btnRect). + append($s.createSVGElement('rect'). + attr(btnAttr). + css('stroke-width', 1). + css('stroke', '#666666'). + css('fill', 'none') ). + append($playing). + on('mousedown', function(event) { + event.preventDefault(); + event.stopPropagation(); + $panel.trigger('playDown'); + }); + + var $panel = $s.createSVGElement('g'). + append($btn).append($lcdPanel); + + return { + $ui : $panel, + setPlaying : function(playing) { + $playing.css('fill', playing? '#00ff00' : '#006600'). + css('stroke', playing? '#00cc00' : '#003300'); + }, + setTimeRange : function(timeRange) { + var unit = 'ms'; + if (timeRange > 5000) { + unit = 's'; + timeRange /= 1000; + } + setLCDText('TimeRange:' + timeRange + unit); + } + }; + }; + + return function(device) { + + var numInputs = Math.max(1, + device.deviceDef.numInputs || 4); + var scale = 1; + var gap = 2; + + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + + var state = device.deviceDef.state || + { playing : true, rangeIndex : 0 }; + device.getState = function() { + return state; + }; + + //external body size + device.getSize = function() { + return { width : unit * 4, + height : unit * (numInputs * scale + 2) }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + //position of display + var $display = $s.createSVGElement('g'); + device.$ui.append($display); + $s.transform($display, unit / 2, unit / 2); + + //Inner LCD size + var $rect = $s.createSVGElement('rect'). + css('stroke', 'none').css('fill', '#000000'). + attr({x: 0, y: 0, width: unit * 3, + height: unit * numInputs * scale }); + $display.append($rect); + + var probes = []; + for (var i = 0; i < device.getInputs().length; i += 1) { + var inNode = device.getInputs()[i]; + $s.transform(inNode.$ui, 0, unit * + (0.5 + 0.5 * scale + i * scale) ); + var probe = createProbe(colors[i % colors.length]); + probes.push(probe); + $display.append(probe.$ui); + } + + var setTimeRange = function(timeRange) { + panel.setTimeRange(timeRange); + for (var i = 0; i < probes.length; i += 1) { + probes[i].setTimeRange(timeRange); + } + }; + + var panel = createPanel(); + panel.$ui.on('playDown', function(event){ + state.playing = !state.playing; + panel.setPlaying(state.playing); + }).on('timeRangeDown', function(event) { + state.rangeIndex = (state.rangeIndex + 1) % timeRanges.length; + setTimeRange(timeRanges[state.rangeIndex]); + }); + device.$ui.append(panel.$ui.css('display', 'none') ); + $s.transform(panel.$ui, unit / 2, + unit * numInputs * scale + unit / 4 * 3); + + panel.setPlaying(state.playing); + setTimeRange(timeRanges[state.rangeIndex] || timeRanges[0]); + + var alive = false; + var render = function(ts) { + for (var i = 0; i < device.getInputs().length; i += 1) { + probes[i].sample(ts, device.getInputs()[i].getValue() ); + if (state.playing) { + probes[i].update(ts, 0, unit * i * scale + gap, + unit * 15, unit * scale - gap * 2); + } + } + if (alive) { + window.requestAnimationFrame(render); + } + }; + + device.$ui.on('deviceAdd', function() { + + device.$ui.children('.simcir-device-body'). + attr('width', unit * 16); + device.$ui.children('.simcir-device-label'). + attr('x', unit * 8); + $rect.attr('width', unit * 15); + panel.$ui.css('display', ''); + + alive = true; + window.requestAnimationFrame(render); + + }).on('deviceRemove', function() { + alive = false; + }); + + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 4, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":4}' + }; + }; + }; + }; + + var createFontPath = function() { + var data = { + "\u0020":[0,0,0,0,0,0,0], + "!":[4,4,4,4,0,0,4], + "\"":[10,10,10,0,0,0,0], + "#":[10,10,31,10,31,10,10], + "$":[4,30,5,14,20,15,4], + "%":[3,19,8,4,2,25,24], + "&":[6,9,5,2,21,9,22], + "'":[6,4,2,0,0,0,0], + "(":[8,4,2,2,2,4,8], + ")":[2,4,8,8,8,4,2], + "*":[0,4,21,14,21,4,0], + "+":[0,4,4,31,4,4,0], + ",":[0,0,0,0,6,4,2], + "-":[0,0,0,31,0,0,0], + ".":[0,0,0,0,0,6,6], + "/":[0,16,8,4,2,1,0], + "0":[14,17,25,21,19,17,14], + "1":[4,6,4,4,4,4,14], + "2":[14,17,16,8,4,2,31], + "3":[31,8,4,8,16,17,14], + "4":[8,12,10,9,31,8,8], + "5":[31,1,15,16,16,17,14], + "6":[12,2,1,15,17,17,14], + "7":[31,16,8,4,2,2,2], + "8":[14,17,17,14,17,17,14], + "9":[14,17,17,30,16,8,6], + ":":[0,6,6,0,6,6,0], + ";":[0,6,6,0,6,4,2], + "<":[8,4,2,1,2,4,8], + "=":[0,0,31,0,31,0,0], + ">":[2,4,8,16,8,4,2], + "?":[14,17,16,8,4,0,4], + "@":[14,17,16,18,21,21,14], + "A":[14,17,17,17,31,17,17], + "B":[15,17,17,15,17,17,15], + "C":[14,17,1,1,1,17,14], + "D":[7,9,17,17,17,9,7], + "E":[31,1,1,15,1,1,31], + "F":[31,1,1,15,1,1,1], + "G":[14,17,1,29,17,17,14], + "H":[17,17,17,31,17,17,17], + "I":[14,4,4,4,4,4,14], + "J":[28,8,8,8,8,9,6], + "K":[17,9,5,3,5,9,17], + "L":[1,1,1,1,1,1,31], + "M":[17,27,21,21,17,17,17], + "N":[17,17,19,21,25,17,17], + "O":[14,17,17,17,17,17,14], + "P":[15,17,17,15,1,1,1], + "Q":[14,17,17,17,21,9,22], + "R":[15,17,17,15,5,9,17], + "S":[30,1,1,14,16,16,15], + "T":[31,4,4,4,4,4,4], + "U":[17,17,17,17,17,17,14], + "V":[17,17,17,17,17,10,4], + "W":[17,17,17,21,21,21,10], + "X":[17,17,10,4,10,17,17], + "Y":[17,17,17,10,4,4,4], + "Z":[31,16,8,4,2,1,31], + "[":[14,2,2,2,2,2,14], + "\\":[0,1,2,4,8,16,0], + "]":[14,8,8,8,8,8,14], + "^":[4,10,17,0,0,0,0], + "_":[0,0,0,0,0,0,31], + "`":[2,4,8,0,0,0,0], + "a":[0,0,14,16,30,17,30], + "b":[1,1,1,15,17,17,15], + "c":[0,0,30,1,1,1,30], + "d":[16,16,16,30,17,17,30], + "e":[0,0,14,17,31,1,30], + "f":[8,20,4,14,4,4,4], + "g":[0,0,30,17,30,16,15], + "h":[1,1,1,15,17,17,17], + "i":[0,4,0,4,4,4,4], + "j":[8,0,8,8,8,9,6], + "k":[2,2,18,10,6,10,18], + "l":[6,4,4,4,4,4,14], + "m":[0,0,27,21,21,21,17], + "n":[0,0,13,19,17,17,17], + "o":[0,0,14,17,17,17,14], + "p":[0,0,15,17,15,1,1], + "q":[0,0,30,17,30,16,16], + "r":[0,0,13,19,1,1,1], + "s":[0,0,30,1,14,16,15], + "t":[4,4,31,4,4,20,8], + "u":[0,0,17,17,17,17,14], + "v":[0,0,17,17,17,10,4], + "w":[0,0,17,17,21,21,10], + "x":[0,0,17,10,4,10,17], + "y":[0,0,17,10,4,4,2], + "z":[0,0,31,8,4,2,31], + "{":[12,2,2,1,2,2,12], + "|":[4,4,4,4,4,4,4], + "}":[6,8,8,16,8,8,6], + "~":[16,14,1,0,0,0,0] + }; + var getCharPath = function(c, x, y, s) { + var d = ''; + var cdata = data[c] || data['?']; + for (var cy = 0; cy < cdata.length; cy += 1) { + for (var cx = 0; cx < 5; cx += 1) { + if ( (cdata[cy] >> cx) & 1) { + d += 'M' + (x + cx) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy) * s; + d += 'L' + (x + cx + 1) * s + ' ' + (y + cy + 1) * s; + d += 'L' + (x + cx) * s + ' ' + (y + cy + 1) * s; + d += 'Z'; + } + } + } + return d; + }; + return function(s, x, y, scale) { + scale = scale || 1; + var d = ''; + for (var i = 0; i < s.length; i += 1) { + d += getCharPath(s.charAt(i), x + i * 6, y, scale); + } + return d; + }; + }(); + + $s.registerDevice('DSO', createDSOFactory() ); + +}(simcir); diff --git a/project3/Libraries/simcirjs/misc/simcir-num.js b/project3/Libraries/simcirjs/misc/simcir-num.js new file mode 100644 index 00000000..7b0f08f1 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir-num.js @@ -0,0 +1,328 @@ +// +// SimcirJS - Num +// +// Copyright (c) 2017 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// NumSrc +// NumDsp + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createNumLabel = function(size) { + var $label = $s.createSVGElement('g'). + css('pointer-events', 'none'). + attr('fill', 'none'). + attr('stroke-width', '2'); + $s.transform($label, size.width / 2, size.height / 2); + var lsize = Math.max(size.width, size.height); + var ratio = 0.65; + $s.controller($label, { + setOn : function(on) { + $label.children().remove(); + if (on) { + var w = lsize / 2 * ratio * 0.5; + var x = w * 0.2; + $label.append($s.createSVGElement('path'). + attr('d', + 'M' + x + ' ' + (lsize / 2 * ratio) + + 'L ' + x + ' ' + -lsize / 2 * ratio + + 'Q' + (x - lsize / 2 * ratio * 0.125) + + ' ' + (-lsize / 2 * ratio * 0.6) + + ' ' + (x - w) + + ' ' + (-lsize / 2 * ratio * 0.5) ). + attr('stroke-linecap' , 'square'). + attr('stroke-linejoin' , 'round') ); + } else { + $label.append($s.createSVGElement('ellipse'). + attr({ cx : 0, cy : 0, + rx : lsize / 2 * ratio * 0.6, ry : lsize / 2 * ratio}). + attr('fill', 'none') ); + } + }, + setColor : function(color) { + $label.attr('stroke', color); + } + }); + return $label; + }; + + var createNumFactory = function(type) { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = type == 'dsp'? device.addInput() : null; + var out1 = type == 'src'? device.addOutput() : null; + + var on = false; + var updateOutput = null; + + var direction = null; + if (device.deviceDef.state) { + direction = device.deviceDef.state.direction; + } + if (typeof direction != 'number') { + direction = type == 'src'? Direction.WE : Direction.EW; + } + + if (type == 'src') { + if (device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return { direction : direction, on : on }; + }; + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + updateOutput = function() { + out1.setValue(on? 1 : null); + }; + updateOutput(); + } else if (type == 'dsp') { + device.getState = function() { + return { direction : direction }; + }; + } + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + var size = device.getSize(); + + device.$ui.css('fill', '#eeeeee'); + + var $button = null; + if (type == 'src') { + $button = $s.createSVGElement('rect'). + attr({x: 1, y: 1, width: size.width - 2, height: size.height - 2, + rx: 2, ry: 2, stroke: 'none', fill: '#cccccc'}). + append($s.createSVGElement('title') ); + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + on = !on; + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + }; + var button_mouseUpHandler = function(event) { + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + $button.on('dblclick', button_dblClickHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + $button.off('dblclick', button_dblClickHandler); + }); + var out1_setValue = out1.setValue; + out1.setValue = function(value) { + out1_setValue(value); + $s.controller($numLabel).setOn(out1.getValue() != null); + }; + } + + var $numLabel = createNumLabel(size); + $s.controller($numLabel).setColor('#000000'); + device.$ui.append($numLabel); + + if (type == 'src') { + $s.controller($numLabel).setOn(out1.getValue() != null); + } else if (type == 'dsp') { + $s.controller($numLabel).setOn(false); + device.$ui.on('inputValueChange', function() { + $s.controller($numLabel).setOn(in1.getValue() != null); + }); + } + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + if (type == 'src') { + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr('cx', size.width).attr('cy', size.height / 2).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + } + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + if (direction == Direction.WE) { + x0 += d; + x1 += unit; + } else if (direction == Direction.NS) { + y0 += d * 1.25; + y1 += unit; + } else if (direction == Direction.EW) { + x0 -= d; + x1 -= unit; + } else if (direction == Direction.SN) { + y0 -= d * 1.25; + y1 -= unit; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + if (type == 'src') { + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + } else if (type == 'dsp') { + $s.transform(in1.$ui, x1, y1); + } + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: -unit / 2, y: 0, width: unit * 2, height: unit}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: -unit / 2, width: unit, height: unit * 2}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + if (type == 'src') { + $button.css('opacity', opacity); + $point.css('opacity', 1 - opacity); + } + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + direction = (direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + $s.registerDevice('NumSrc', createNumFactory('src') ); + $s.registerDevice('NumDsp', createNumFactory('dsp') ); + +}(simcir); diff --git a/project3/Libraries/simcirjs/misc/simcir-transmitter.js b/project3/Libraries/simcirjs/misc/simcir-transmitter.js new file mode 100644 index 00000000..c9a08c30 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir-transmitter.js @@ -0,0 +1,325 @@ +// +// SimcirJS - Transmitter +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// Transmitter + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var createTransmitterFactory = function() { + + var emptyGroup = { + getValue : function() { return null; }, + setValue : function(value, force) {}, + getInput : function() { return null; }, + setInput : function(device) {} + }; + + var createGroup = function(devices) { + var input = function() { + for (var i = 0; i < devices.length; i += 1) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + return devices[i]; + } + } + return null; + }(); + return { + getValue : function() { + return input != null? input.getInputs()[0].getValue() : null; + }, + setValue : function(value, force) { + for (var i = 0; i < devices.length; i += 1) { + devices[i].getOutputs()[0].setValue(value, force); + } + }, + getInput : function() { + return input; + }, + setInput : function(device) { + input = device; + for (var i = 0; i < devices.length; i += 1) { + if (devices[i] != device) { + var inNode = devices[i].getInputs()[0]; + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + } + } + } + }; + }; + + var createGroupByLabel = function(devices) { + var devicesByLabel = {}; + for (var id in devices) { + var device = devices[id]; + var label = device.getLabel(); + if (!devicesByLabel[label]) { + devicesByLabel[label] = []; + } + devicesByLabel[label].push(device); + } + var groupByLabel = {}; + for (var label in devicesByLabel) { + groupByLabel[label] = createGroup(devicesByLabel[label]); + } + return groupByLabel; + }; + + var createGroupManager = function() { + + var devices = {}; + var idCount = 0; + var groupCache = null; + + var register = function(device) { + var id = 'id' + idCount++; + if (device.headless) { + devices[id] = device; + reset(); + } else { + device.$ui.on('deviceAdd', function() { + devices[id] = device; + reset(); + }).on('deviceRemove', function() { + delete devices[id]; + reset(); + }); + } + }; + + var reset = function() { + groupCache = null; + }; + + var getGroupByLabel = function(label) { + if (!groupCache) { + groupCache = createGroupByLabel(devices); + } + return groupCache[label] || emptyGroup; + }; + + return { + register : register, + reset : reset, + getGroupByLabel : getGroupByLabel + }; + }; + + var maxFadeCount = 16; + var fadeTimeout = 100; + var getEmptyGroupByLabel = function(label) { return emptyGroup; }; + + return function(device) { + + var getGroupByLabel = getEmptyGroupByLabel; + if (device.scope) { + var groupManager = device.scope.transmitterGroupManager; + if (!groupManager) { + groupManager = createGroupManager(); + device.scope.transmitterGroupManager = groupManager; + } + groupManager.register(device); + getGroupByLabel = function(label) { + return groupManager.getGroupByLabel(label); + }; + } + + var in1 = device.addInput(); + var out1 = device.addOutput(); + var lastLabel = device.getLabel(); + + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + getGroupByLabel(device.getLabel() ).setValue(in1.getValue(), force); + } + }; + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + if (outNode != null) { + getGroupByLabel(device.getLabel() ).setInput(device); + } + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + + var $label = device.$ui.children('.simcir-device-label'); + var defaultLabelX = +$label.attr('x'); + var defaultLabelY = +$label.attr('y'); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0). + attr({cx: unit / 2, cy: unit / 2, r: 2}). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var updateUI = function() { + + var isInSet = in1.getOutput() != null; + var isOutSet = out1.getInputs().length > 0; + + var x0, y0, x1, y1, cx, cy; + x0 = y0 = x1 = y1 = cx = cy = unit / 2; + var d = unit / 2; + x0 -= d; + x1 += d; + if (isInSet && isOutSet) { + } else if (isInSet) { + cx += d; + } else if (isOutSet) { + cx -= d; + } + $point.attr('cx', cx).attr('cy', cy); + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + + var labelX = defaultLabelX; + var labelY = defaultLabelY; + var anchor = 'middle'; + if (isInSet && isOutSet) { + labelY -= unit / 4; + } else if (!isInSet && !isOutSet) { + labelY -= unit / 4; + } else if (isInSet) { + labelX += unit; + labelY -= unit; + anchor = 'start'; + } else if (isOutSet) { + labelX -= unit; + labelY -= unit; + anchor = 'end'; + } + $label.attr('x', labelX).attr('y', labelY). + attr('text-anchor', anchor); + }; + + updateUI(); + + var in1_super_setOutput = in1.setOutput; + in1.setOutput = function(outNode) { + in1_super_setOutput(outNode); + updateUI(); + }; + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updateUI(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updateUI(); + }; + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var device_mouseoutHandler = function(event) { + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + + device.$ui.on('mouseover', function(event) { + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + out1.setValue(getGroupByLabel(device.getLabel() ).getValue() ); + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).on('mouseout', device_mouseoutHandler); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler); + }).on('deviceLabelChange', function() { + + groupManager.reset(); + + var lastGrp = getGroupByLabel(lastLabel); + lastGrp.setValue(lastGrp.getValue() ); + + var newLabel = device.getLabel(); + var newGrp = getGroupByLabel(newLabel); + if (in1.getOutput() != null) { + newGrp.setInput(device); + } + newGrp.setValue(newGrp.getValue() ); + + lastLabel = newLabel; + + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + device.doc = { + description: + 'Transmit a signal to another trasmitter that has same label.', + params: [], + code: '{"type":"' + device.deviceDef.type + '"}' + }; + }; + }; + }; + + $s.registerDevice('Transmitter', createTransmitterFactory() ); + +}(simcir); diff --git a/project3/Libraries/simcirjs/misc/simcir.d.ts b/project3/Libraries/simcirjs/misc/simcir.d.ts new file mode 100644 index 00000000..e8de5c02 --- /dev/null +++ b/project3/Libraries/simcirjs/misc/simcir.d.ts @@ -0,0 +1,127 @@ +// +// SimcirJS - TypeScript Declaration File +// +// Copyright (c) 2016 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +interface SimcirPoint { x: number, y: number } +interface SimcirSize { width: number, height: number } +interface SimcirRect extends SimcirPoint, SimcirSize {} + +interface SimcirEvent { target: JQuery, type: string } + +interface SimcirGraphics { + attr: { [name : string] : (string|number) }; + moveTo(x: number, y: number) : void; + lineTo(x: number, y: number) : void; + curveTo(x1: number, y1: number, x: number, y: number) : void; + closePath(close?: boolean) : void; + drawRect(x: number, y: number, width: number, height: number) : void; + drawCircle(x: number, y: number, r: number) : void; +} + +interface SimcirNode { + type: string; + label: string; + description: string; + $ui: JQuery; + headless: boolean; + getValue() : any; + setValue(value : any, force? : boolean) : void; +} + +interface SimcirInputNode extends SimcirNode { + setOutput(outNode : SimcirNode) : void; + getOutput() : SimcirOutputNode; +} + +interface SimcirOutputNode extends SimcirNode { + getInputs() : SimcirInputNode[]; + connectTo(inNode : SimcirInputNode) : void; + disconnectFrom(inNode : SimcirInputNode) : void; +} + +interface SimcirDeviceDefBase { [id : string] : string|number } + +interface SimcirDeviceDef extends SimcirDeviceDefBase { + type: string; + label?: string; +} + +interface SimcirDeviceInstance extends SimcirDeviceDef { + id: string; + x: number; + y: number; +} + +interface SimcirDocument { params: SimcirParamDescription[]; code: string; } + +interface SimcirParamDescription { + name: string; + type: string; + defaultValue: any; + description: string; +} + +interface SimcirDevice { + $ui: JQuery; + doc: SimcirDocument; + halfPitch: boolean; + headless: boolean; + scope: any; + deviceDef: Def; + addInput(label? : string, description? : string) : SimcirInputNode; + getInputs() : SimcirInputNode[]; + addOutput(label? : string, description? : string) : SimcirOutputNode; + getOutputs() : SimcirOutputNode[]; + getLabel() : string; + getSize() : SimcirSize; + createUI() : void; + getState() : any; +} + +interface SimcirConnectorDef { from: string; to: string; } + +interface SimcirData { + width?: number; + height?: number; + toolbox?: SimcirDeviceDef[]; + showToolbox?: boolean; + editable?: boolean; + layout? : SimcirCustomLayout; + devices?: SimcirDeviceInstance[]; + connectors?: SimcirConnectorDef[]; +} + +interface SimcirCustomLayout { + rows: number; + cols: number; + hideLabelOnWorkspace?: boolean; + nodes: { [label : string] : string }; +} + +type SimcirTypeFactory = (device : Def) => void; + +interface Simcir { + unit: number; + createSVGElement(tagName: string) : JQuery; + graphics($target: JQuery) : SimcirGraphics; + offset($o: JQuery) : SimcirPoint; + transform($o: JQuery, x: number, y: number, rotate: number) : void; + transform($o: JQuery) : { x: number; y: number; rotate: number; }; + enableEvents($o: JQuery, enable: boolean) : void; + controller($ui: JQuery, controller: any) : void; + controller($ui: JQuery) : any; + registerDevice(type: string, factory: SimcirTypeFactory) : void; + registerDevice(type: string, data: SimcirData) : void; + clearSimcir($placeHolder: JQuery) : JQuery; + setupSimcir($placeHolder: JQuery, data: SimcirData) : JQuery; + createWorkspace(data: SimcirData) : JQuery; +} + +declare var simcir : Simcir; diff --git a/project3/Libraries/simcirjs/simcir-basicset.css b/project3/Libraries/simcirjs/simcir-basicset.css new file mode 100644 index 00000000..9c163744 --- /dev/null +++ b/project3/Libraries/simcirjs/simcir-basicset.css @@ -0,0 +1,44 @@ +/* + * SimcirJS - basicset + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-basicset-dc { + fill: #ffcccc; +} + +.simcir-basicset-switch { + fill: #ccccff; +} + +.simcir-basicset-switch-button-pressed { + fill: #9999cc; +} + +.simcir-basicset-symbol { + stroke: #000000; + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; +} + +.simcir-basicset-osc { + fill: #ffcccc; +} + +.simcir-basicset-knob { + stroke: none; + fill: #333333; +} + +.simcir-basicset-knob-mark { + stroke: #ffffff; + stroke-width: 3; +} diff --git a/project3/Libraries/simcirjs/simcir-basicset.js b/project3/Libraries/simcirjs/simcir-basicset.js new file mode 100644 index 00000000..072f804f --- /dev/null +++ b/project3/Libraries/simcirjs/simcir-basicset.js @@ -0,0 +1,1006 @@ +// +// SimcirJS - basicset +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// DC +// LED +// PMOS +// NMOS +// PushOff +// PushOn +// Toggle +// BUF +// NOT +// AND +// NAND +// OR +// NOR +// EOR +// ENOR +// OSC +// 7seg +// 16seg +// 4bit7seg +// RotaryEncoder +// BusIn +// BusOut +// NMOS +// PMOS +// CAP + +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + // red/black + var defaultLEDColor = '#ff0000'; + var defaultLEDBgColor = '#000000'; + + var multiplyColor = function() { + var HEX = '0123456789abcdef'; + var toIColor = function(sColor) { + if (!sColor) { + return 0; + } + sColor = sColor.toLowerCase(); + if (sColor.match(/^#[0-9a-f]{3}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt( (i >> 1) + 1) ); + } + return iColor; + } else if (sColor.match(/^#[0-9a-f]{6}$/i) ) { + var iColor = 0; + for (var i = 0; i < 6; i += 1) { + iColor = (iColor << 4) | HEX.indexOf(sColor.charAt(i + 1) ); + } + return iColor; + } + return 0; + }; + var toSColor = function(iColor) { + var sColor = '#'; + for (var i = 0; i < 6; i += 1) { + sColor += HEX.charAt( (iColor >>> (5 - i) * 4) & 0x0f); + } + return sColor; + }; + var toRGB = function(iColor) { + return { + r: (iColor >>> 16) & 0xff, + g: (iColor >>> 8) & 0xff, + b: iColor & 0xff}; + }; + var multiplyColor = function(iColor1, iColor2, ratio) { + var c1 = toRGB(iColor1); + var c2 = toRGB(iColor2); + var mc = function(v1, v2, ratio) { + return ~~Math.max(0, Math.min( (v1 - v2) * ratio + v2, 255) ); + }; + return (mc(c1.r, c2.r, ratio) << 16) | + (mc(c1.g, c2.g, ratio) << 8) | mc(c1.b, c2.b, ratio); + }; + return function(color1, color2, ratio) { + return toSColor(multiplyColor( + toIColor(color1), toIColor(color2), ratio) ); + }; + }(); + + // symbol draw functions + var drawBUF = function(g, x, y, width, height) { + g.moveTo(x, y); + g.lineTo(x + width, y + height / 2); + g.lineTo(x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawAND = function(g, x, y, width, height) { + g.moveTo(x, y); + g.curveTo(x + width, y, x + width, y + height / 2); + g.curveTo(x + width, y + height, x, y + height); + g.lineTo(x, y); + g.closePath(true); + }; + var drawOR = function(g, x, y, width, height) { + var depth = width * 0.2; + g.moveTo(x, y); + g.curveTo(x + width - depth, y, x + width, y + height / 2); + g.curveTo(x + width - depth, y + height, x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(true); + }; + var drawNMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5, y + height/2); + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + + var drawCAP = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5, y + height/2); + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height/2); + g.lineTo(x + height,y + height/2); + g.closePath(false); + }; + + var drawGND = function(g, x, y, width, height) { + g.moveTo(x + width, y + height/2); + g.lineTo(x + 4*width/5, y + height/2); + + g.moveTo(x + 2*width/5, y + height*3.2/6 ); + g.lineTo(x + 2*width/5, y + height*2.7/6); + + g.moveTo(x + 3*width/5, y + height*4/6); + g.lineTo(x + 3*width/5, y + height*2/6); + + g.moveTo(x + 4*width/5, y + height*5/6); + g.lineTo(x + 4*width/5, y + height/6); + + g.closePath(false); + + }; + var drawPMOS = function(g, x, y, width, height) { + g.moveTo(x, y + height/2); + g.lineTo(x + 2*width/5 - 3, y + height/2); + + g.drawCircle(x + 2*width/5 - 2, y + height/2,1.5); + + g.moveTo(x + 2*width/5, y + height*2/3 ); + g.lineTo(x + 2*width/5, y + height/3); + g.moveTo(x + 3*width/5, y + height*2/3); + g.lineTo(x + 3*width/5, y + height/3); + + g.moveTo(x + 3*width/5, y + height*2/5); + g.lineTo(x + width, y + height*2/5); + g.lineTo(x + width, y); + + g.moveTo(x + 3*width/5, y + height*3/5); + g.lineTo(x + width, y + height*3/5); + g.lineTo(x + width, y + height); + g.closePath(false); + }; + var drawEOR = function(g, x, y, width, height) { + drawOR(g, x + 3, y, width - 3, height); + var depth = (width - 3) * 0.2; + g.moveTo(x, y + height); + g.curveTo(x + depth, y + height, x + depth, y + height / 2); + g.curveTo(x + depth, y, x, y); + g.closePath(); + }; + var drawNOT = function(g, x, y, width, height) { + drawBUF(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNAND = function(g, x, y, width, height) { + drawAND(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawNOR = function(g, x, y, width, height) { + drawOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + var drawENOR = function(g, x, y, width, height) { + drawEOR(g, x - 1, y, width - 2, height); + g.drawCircle(x + width - 1, y + height / 2, 2); + }; + // logical functions + var AND = function(a, b) { return a & b; }; + var OR = function(a, b) { return a | b; }; + var EOR = function(a, b) { return a ^ b; }; + var BUF = function(a) { return (a == 1)? 1 : 0; }; + var NOT = function(a) { return (a == 1)? 0 : 1; }; + + var onValue = 1; + var offValue = null; + var isHot = function(v) { return v != null; }; + var intValue = function(v) { return isHot(v)? 1 : 0; }; + + var createSwitchFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + var on = (type == 'PushOff'); + + if (type == 'Toggle' && device.deviceDef.state) { + on = device.deviceDef.state.on; + } + device.getState = function() { + return type == 'Toggle'? { on : on } : null; + }; + + device.$ui.on('inputValueChange', function() { + if (on) { + out1.setValue(in1.getValue() ); + } + }); + var updateOutput = function() { + out1.setValue(on? in1.getValue() : null); + }; + updateOutput(); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var $button = $s.createSVGElement('rect'). + attr({x: size.width / 4, y: size.height / 4, + width: size.width / 2, height: size.height / 2, + rx: 2, ry: 2}); + $button.addClass('simcir-basicset-switch-button'); + if (type == 'Toggle' && on) { + $button.addClass('simcir-basicset-switch-button-pressed'); + } + device.$ui.append($button); + var button_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + if (type == 'PushOn') { + on = true; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = false; + $button.addClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + on = !on; + $button.addClass('simcir-basicset-switch-button-pressed'); + } + updateOutput(); + $(document).on('mouseup', button_mouseUpHandler); + $(document).on('touchend', button_mouseUpHandler); + }; + var button_mouseUpHandler = function(event) { + if (type == 'PushOn') { + on = false; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'PushOff') { + on = true; + $button.removeClass('simcir-basicset-switch-button-pressed'); + } else if (type == 'Toggle') { + // keep state + if (!on) { + $button.removeClass('simcir-basicset-switch-button-pressed'); + } + } + updateOutput(); + $(document).off('mouseup', button_mouseUpHandler); + $(document).off('touchend', button_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($button, true); + $button.on('mousedown', button_mouseDownHandler); + $button.on('touchstart', button_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($button, false); + $button.off('mousedown', button_mouseDownHandler); + $button.off('touchstart', button_mouseDownHandler); + }); + device.$ui.addClass('simcir-basicset-switch'); + }; + }; + }; + + var createLogicGateFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + + + var createGND = function(op, out, draw) { + return function(device) { + device.addOutput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + outputs[0].setValue( (b == 1)? 1 : null); + }); + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + /* + var segBase = function() { + return { + width: 0, + height: 0, + allSegments: '', + drawSegment: function(g, segment, color) {}, + drawPoint: function(g, color) {} + }; + }; + */ + //---------------------------------------------------------------------------------- + var createMOSFactory = function(op, out, draw) { + return function(device) { + var numInputs = (op == null)? 1 : + Math.max(2, device.deviceDef.numInputs || 2); + device.halfPitch = numInputs > 2; + device.addInput(); + device.addInput(); + device.addInput(); + var inputs = device.getInputs(); + var outputs = device.getOutputs(); + device.$ui.on('inputValueChange', function() { + var b = intValue(inputs[0].getValue() ); + if (op != null) { + for (var i = 1; i < inputs.length; i += 1) { + b = op(b, intValue(inputs[i].getValue() ) ); + } + } + b = out(b); + //outputs[0].setValue( (b == 1)? 1 : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getMOSSize(); + var g = $s.graphics(device.$ui); + g.attr['class'] = 'simcir-basicset-symbol'; + draw(g, + (size.width - unit) / 2, + (size.height - unit) / 2, + unit, unit); + if (op != null) { + device.doc = { + params: [ + {name: 'numInputs', type: 'number', + defaultValue: 2, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":2}' + }; + } + }; + }; + }; + + + //---------------------------------------------------------------------------------- + + var _7Seg = function() { + var _SEGMENT_DATA = { + a: [575, 138, 494, 211, 249, 211, 194, 137, 213, 120, 559, 120], + b: [595, 160, 544, 452, 493, 500, 459, 456, 500, 220, 582, 146], + c: [525, 560, 476, 842, 465, 852, 401, 792, 441, 562, 491, 516], + d: [457, 860, 421, 892, 94, 892, 69, 864, 144, 801, 394, 801], + e: [181, 560, 141, 789, 61, 856, 48, 841, 96, 566, 148, 516], + f: [241, 218, 200, 453, 150, 500, 115, 454, 166, 162, 185, 145], + g: [485, 507, 433, 555, 190, 555, 156, 509, 204, 464, 451, 464] + }; + return { + width: 636, + height: 1000, + allSegments: 'abcdefg', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(542, 840, 46); + } + }; + }(); + + var _16Seg = function() { + var _SEGMENT_DATA = { + a: [255, 184, 356, 184, 407, 142, 373, 102, 187, 102], + b: [418, 144, 451, 184, 552, 184, 651, 102, 468, 102], + c: [557, 190, 507, 455, 540, 495, 590, 454, 656, 108], + d: [487, 550, 438, 816, 506, 898, 573, 547, 539, 507], + e: [281, 863, 315, 903, 500, 903, 432, 821, 331, 821], + f: [35, 903, 220, 903, 270, 861, 236, 821, 135, 821], + g: [97, 548, 30, 897, 129, 815, 180, 547, 147, 507], + h: [114, 455, 148, 495, 198, 454, 248, 189, 181, 107], + i: [233, 315, 280, 452, 341, 493, 326, 331, 255, 200], + j: [361, 190, 334, 331, 349, 485, 422, 312, 445, 189, 412, 149], + k: [430, 316, 354, 492, 432, 452, 522, 334, 547, 200], + l: [354, 502, 408, 542, 484, 542, 534, 500, 501, 460, 434, 460], + m: [361, 674, 432, 805, 454, 691, 405, 550, 351, 509], + n: [265, 693, 242, 816, 276, 856, 326, 815, 353, 676, 343, 518], + o: [255, 546, 165, 671, 139, 805, 258, 689, 338, 510], + p: [153, 502, 187, 542, 254, 542, 338, 500, 278, 460, 203, 460] + }; + return { + width: 690, + height: 1000, + allSegments: 'abcdefghijklmnop', + drawSegment: function(g, segment, color) { + if (!color) { + return; + } + var data = _SEGMENT_DATA[segment]; + var numPoints = data.length / 2; + g.attr['fill'] = color; + for (var i = 0; i < numPoints; i += 1) { + var x = data[i * 2]; + var y = data[i * 2 + 1]; + if (i == 0) { + g.moveTo(x, y); + } else { + g.lineTo(x, y); + } + } + g.closePath(true); + }, + drawPoint: function(g, color) { + if (!color) { + return; + } + g.attr['fill'] = color; + g.drawCircle(610, 900, 30); + } + }; + }(); + + var drawSeg = function(seg, g, pattern, hiColor, loColor, bgColor) { + g.attr['stroke'] = 'none'; + if (bgColor) { + g.attr['fill'] = bgColor; + g.drawRect(0, 0, seg.width, seg.height); + } + var on; + for (var i = 0; i < seg.allSegments.length; i += 1) { + var c = seg.allSegments.charAt(i); + on = (pattern != null && pattern.indexOf(c) != -1); + seg.drawSegment(g, c, on? hiColor : loColor); + } + on = (pattern != null && pattern.indexOf('.') != -1); + seg.drawPoint(g, on? hiColor : loColor); + }; + + var createSegUI = function(device, seg) { + var size = device.getSize(); + var sw = seg.width; + var sh = seg.height; + var dw = size.width - unit; + var dh = size.height - unit; + var scale = (sw / sh > dw / dh)? dw / sw : dh / sh; + var tx = (size.width - seg.width * scale) / 2; + var ty = (size.height - seg.height * scale) / 2; + return $s.createSVGElement('g'). + attr('transform', 'translate(' + tx + ' ' + ty + ')' + + ' scale(' + scale + ') '); + }; + + var createLEDSegFactory = function(seg) { + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var allSegs = seg.allSegments + '.'; + device.halfPitch = true; + for (var i = 0; i < allSegs.length; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var segs = ''; + for (var i = 0; i < allSegs.length; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + segs += allSegs.charAt(i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), segs, + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createLED4bitFactory = function() { + + var _PATTERNS = { + 0: 'abcdef', + 1: 'bc', + 2: 'abdeg', + 3: 'abcdg', + 4: 'bcfg', + 5: 'acdfg', + 6: 'acdefg', + 7: 'abc', + 8: 'abcdefg', + 9: 'abcdfg', + a: 'abcefg', + b: 'cdefg', + c: 'adef', + d: 'bcdeg', + e: 'adefg', + f: 'aefg' + }; + + var getPattern = function(value) { + return _PATTERNS['0123456789abcdef'.charAt(value)]; + }; + + var seg = _7Seg; + + return function(device) { + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + for (var i = 0; i < 4; i += 1) { + device.addInput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $seg = createSegUI(device, seg); + device.$ui.append($seg); + + var update = function() { + var value = 0; + for (var i = 0; i < 4; i += 1) { + if (isHot(device.getInputs()[i].getValue() ) ) { + value += (1 << i); + } + } + $seg.children().remove(); + drawSeg(seg, $s.graphics($seg), getPattern(value), + hiColor, loColor, bgColor); + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }; + }; + + var createRotaryEncoderFactory = function() { + var _MIN_ANGLE = 45; + var _MAX_ANGLE = 315; + var thetaToAngle = function(theta) { + var angle = (theta - Math.PI / 2) / Math.PI * 180; + while (angle < 0) { + angle += 360; + } + while (angle > 360) { + angle -= 360; + } + return angle; + }; + return function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 4); + device.halfPitch = numOutputs > 4; + device.addInput(); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + + var $knob = $s.createSVGElement('g'). + attr('class', 'simcir-basicset-knob'). + append($s.createSVGElement('rect'). + attr({x:-10,y:-10,width:20,height:20})); + var r = Math.min(size.width, size.height) / 4 * 1.5; + var g = $s.graphics($knob); + g.drawCircle(0, 0, r); + g.attr['class'] = 'simcir-basicset-knob-mark'; + g.moveTo(0, 0); + g.lineTo(r, 0); + g.closePath(); + device.$ui.append($knob); + + var _angle = _MIN_ANGLE; + var setAngle = function(angle) { + _angle = Math.max(_MIN_ANGLE, Math.min(angle, _MAX_ANGLE) ); + update(); + }; + + var dragPoint = null; + var knob_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + dragPoint = {x: event.pageX, y: event.pageY}; + $(document).on('mousemove', knob_mouseMoveHandler); + $(document).on('mouseup', knob_mouseUpHandler); + }; + var knob_mouseMoveHandler = function(event) { + var off = $knob.parent('svg').offset(); + var pos = $s.offset($knob); + var cx = off.left + pos.x; + var cy = off.top + pos.y; + var dx = event.pageX - cx; + var dy = event.pageY - cy; + if (dx == 0 && dy == 0) return; + setAngle(thetaToAngle(Math.atan2(dy, dx) ) ); + }; + var knob_mouseUpHandler = function(event) { + $(document).off('mousemove', knob_mouseMoveHandler); + $(document).off('mouseup', knob_mouseUpHandler); + }; + device.$ui.on('deviceAdd', function() { + $s.enableEvents($knob, true); + $knob.on('mousedown', knob_mouseDownHandler); + }); + device.$ui.on('deviceRemove', function() { + $s.enableEvents($knob, false); + $knob.off('mousedown', knob_mouseDownHandler); + }); + + var update = function() { + $s.transform($knob, size.width / 2, + size.height / 2, _angle + 90); + var max = 1 << numOutputs; + var value = Math.min( ( (_angle - _MIN_ANGLE) / + (_MAX_ANGLE - _MIN_ANGLE) * max), max - 1); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue( (value & (1 << i) )? + device.getInputs()[0].getValue() : null); + } + }; + device.$ui.on('inputValueChange', update); + update(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 4, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":4}' + }; + }; + }; + }; + + // register direct current source + $s.registerDevice('DC', function(device) { + device.addOutput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-dc'); + }; + device.$ui.on('deviceAdd', function() { + device.getOutputs()[0].setValue(onValue); + }); + device.$ui.on('deviceRemove', function() { + device.getOutputs()[0].setValue(null); + }); + }); + + // register simple LED + $s.registerDevice('LED', function(device) { + var in1 = device.addInput(); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var hiColor = device.deviceDef.color || defaultLEDColor; + var bgColor = device.deviceDef.bgColor || defaultLEDBgColor; + var loColor = multiplyColor(hiColor, bgColor, 0.25); + var bLoColor = multiplyColor(hiColor, bgColor, 0.2); + var bHiColor = multiplyColor(hiColor, bgColor, 0.8); + var size = device.getSize(); + var $ledbase = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4}). + attr('stroke', 'none'). + attr('fill', bLoColor); + device.$ui.append($ledbase); + var $led = $s.createSVGElement('circle'). + attr({cx: size.width / 2, cy: size.height / 2, r: size.width / 4 * 0.8}). + attr('stroke', 'none'). + attr('fill', loColor); + device.$ui.append($led); + device.$ui.on('inputValueChange', function() { + $ledbase.attr('fill', isHot(in1.getValue() )? bHiColor : bLoColor); + $led.attr('fill', isHot(in1.getValue() )? hiColor : loColor); + }); + device.doc = { + params: [ + {name: 'color', type: 'string', + defaultValue: defaultLEDColor, + description: 'color in hexadecimal.'}, + {name: 'bgColor', type: 'string', + defaultValue: defaultLEDBgColor, + description: 'background color in hexadecimal.'} + ], + code: '{"type":"' + device.deviceDef.type + + '","color":"' + defaultLEDColor + '"}' + }; + }; + }); + + // register switches + $s.registerDevice('PushOff', createSwitchFactory('PushOff') ); + $s.registerDevice('PushOn', createSwitchFactory('PushOn') ); + $s.registerDevice('Toggle', createSwitchFactory('Toggle') ); + + // register logic gates + $s.registerDevice('BUF', createLogicGateFactory(null, BUF, drawBUF) ); + $s.registerDevice('NOT', createLogicGateFactory(null, NOT, drawNOT) ); + $s.registerDevice('AND', createLogicGateFactory(AND, BUF, drawAND) ); + $s.registerDevice('NAND', createLogicGateFactory(AND, NOT, drawNAND) ); + $s.registerDevice('OR', createLogicGateFactory(OR, BUF, drawOR) ); + $s.registerDevice('NOR', createLogicGateFactory(OR, NOT, drawNOR) ); + $s.registerDevice('XOR', createLogicGateFactory(EOR, BUF, drawEOR) ); + $s.registerDevice('XNOR', createLogicGateFactory(EOR, NOT, drawENOR) ); + $s.registerDevice('CAP', createLogicGateFactory(null, NOT, drawCAP) ); + $s.registerDevice('GND', createGND(null, NOT, drawGND) ); + + //--------------------------------------------------------------- + $s.registerDevice('NMOS', createMOSFactory(null, NOT, drawNMOS) ); + $s.registerDevice('PMOS', createMOSFactory(null, NOT, drawPMOS) ); + //--------------------------------------------------------------- + + // deprecated. not displayed in the default toolbox. + $s.registerDevice('EOR', createLogicGateFactory(EOR, BUF, drawEOR), true); + $s.registerDevice('ENOR', createLogicGateFactory(EOR, NOT, drawENOR), true); + + // register Oscillator + $s.registerDevice('OSC', function(device) { + var freq = device.deviceDef.freq || 10; + var delay = ~~(500 / freq); + var out1 = device.addOutput(); + var timerId = null; + var on = false; + device.$ui.on('deviceAdd', function() { + timerId = window.setInterval(function() { + out1.setValue(on? onValue : offValue); + on = !on; + }, delay); + }); + device.$ui.on('deviceRemove', function() { + if (timerId != null) { + window.clearInterval(timerId); + timerId = null; + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.$ui.addClass('simcir-basicset-osc'); + device.doc = { + params: [ + {name: 'freq', type: 'number', defaultValue: '10', + description: 'frequency of an oscillator.'} + ], + code: '{"type":"' + device.deviceDef.type + '","freq":10}' + }; + }; + }); + + // register LED seg + $s.registerDevice('7seg', createLEDSegFactory(_7Seg) ); + $s.registerDevice('16seg', createLEDSegFactory(_16Seg) ); + $s.registerDevice('4bit7seg', createLED4bitFactory() ); + + // register Rotary Encoder + $s.registerDevice('RotaryEncoder', createRotaryEncoderFactory() ); + + $s.registerDevice('BusIn', function(device) { + var numOutputs = Math.max(2, device.deviceDef.numOutputs || 8); + device.halfPitch = true; + device.addInput('', 'x' + numOutputs); + for (var i = 0; i < numOutputs; i += 1) { + device.addOutput(); + } + var extractValue = function(busValue, i) { + return (busValue != null && typeof busValue == 'object' && + typeof busValue[i] != 'undefined')? busValue[i] : null; + }; + device.$ui.on('inputValueChange', function() { + var busValue = device.getInputs()[0].getValue(); + for (var i = 0; i < numOutputs; i += 1) { + device.getOutputs()[i].setValue(extractValue(busValue, i) ); + } + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numOutputs', type: 'number', defaultValue: 8, + description: 'number of outputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numOutputs":8}' + }; + }; + }); + + $s.registerDevice('BusOut', function(device) { + var numInputs = Math.max(2, device.deviceDef.numInputs || 8); + device.halfPitch = true; + for (var i = 0; i < numInputs; i += 1) { + device.addInput(); + } + device.addOutput('', 'x' + numInputs); + device.$ui.on('inputValueChange', function() { + var busValue = []; + var hotCount = 0; + for (var i = 0; i < numInputs; i += 1) { + var value = device.getInputs()[i].getValue(); + if (isHot(value) ) { + hotCount += 1; + } + busValue.push(value); + } + device.getOutputs()[0].setValue( + (hotCount > 0)? busValue : null); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + device.doc = { + params: [ + {name: 'numInputs', type: 'number', defaultValue: 8, + description: 'number of inputs.'} + ], + code: '{"type":"' + device.deviceDef.type + '","numInputs":8}' + }; + }; + }); + +}(simcir); diff --git a/project3/Libraries/simcirjs/simcir-library.js b/project3/Libraries/simcirjs/simcir-library.js new file mode 100644 index 00000000..c8c52f9b --- /dev/null +++ b/project3/Libraries/simcirjs/simcir-library.js @@ -0,0 +1,601 @@ +// +// SimcirJS - library +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// RS-FF +// JK-FF +// T-FF +// D-FF +// 8bitCounter +// HalfAdder +// FullAdder +// 4bitAdder +// 2to4BinaryDecoder +// 3to8BinaryDecoder +// 4to16BinaryDecoder +// OSCo +// Pass Transistor + +simcir.registerDevice('RS-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"NAND","id":"dev0","x":184,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev1","x":184,"y":80,"label":"NAND"}, + {"type":"In","id":"dev2","x":136,"y":24,"label":"~S"}, + {"type":"In","id":"dev3","x":136,"y":88,"label":"~R"}, + {"type":"Out","id":"dev4","x":232,"y":32,"label":"Q"}, + {"type":"Out","id":"dev5","x":232,"y":80,"label":"~Q"}, + {"type":"PushOff","id":"dev6","x":88,"y":24,"label":"PushOff"}, + {"type":"PushOff","id":"dev7","x":88,"y":88,"label":"PushOff"}, + {"type":"DC","id":"dev8","x":40,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev1.in1","to":"dev3.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev1.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('JK-FF', +{ + "width":480, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"RS-FF","id":"dev0","x":216,"y":112,"label":"RS-FF"}, + {"type":"RS-FF","id":"dev1","x":344,"y":112,"label":"RS-FF"}, + {"type":"NAND","numInputs":3,"id":"dev2","x":168,"y":80,"label":"NAND"}, + {"type":"NAND","numInputs":3,"id":"dev3","x":168,"y":144,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":296,"y":80,"label":"NAND"}, + {"type":"NAND","id":"dev5","x":296,"y":144,"label":"NAND"}, + {"type":"NOT","id":"dev6","x":168,"y":24,"label":"NOT"}, + {"type":"In","id":"dev7","x":120,"y":64,"label":"J"}, + {"type":"In","id":"dev8","x":120,"y":112,"label":"CLK"}, + {"type":"In","id":"dev9","x":120,"y":160,"label":"K"}, + {"type":"Out","id":"dev10","x":424,"y":80,"label":"Q"}, + {"type":"Out","id":"dev11","x":424,"y":144,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":72,"y":64,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":72,"y":112,"label":"PushOn"}, + {"type":"Toggle","id":"dev14","x":72,"y":160,"label":"Toggle"}, + {"type":"DC","id":"dev15","x":24,"y":112,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev7.out0"}, + {"from":"dev2.in2","to":"dev8.out0"}, + {"from":"dev3.in0","to":"dev8.out0"}, + {"from":"dev3.in1","to":"dev9.out0"}, + {"from":"dev3.in2","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev4.in1","to":"dev0.out0"}, + {"from":"dev5.in0","to":"dev0.out1"}, + {"from":"dev5.in1","to":"dev6.out0"}, + {"from":"dev6.in0","to":"dev8.out0"}, + {"from":"dev7.in0","to":"dev12.out0"}, + {"from":"dev8.in0","to":"dev13.out0"}, + {"from":"dev9.in0","to":"dev14.out0"}, + {"from":"dev10.in0","to":"dev1.out0"}, + {"from":"dev11.in0","to":"dev1.out1"}, + {"from":"dev12.in0","to":"dev15.out0"}, + {"from":"dev13.in0","to":"dev15.out0"}, + {"from":"dev14.in0","to":"dev15.out0"} + ] +} +); + +simcir.registerDevice('T-FF', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"JK-FF","id":"dev0","x":168,"y":48,"label":"JK-FF"}, + {"type":"In","id":"dev1","x":120,"y":32,"label":"T"}, + {"type":"In","id":"dev2","x":120,"y":80,"label":"CLK"}, + {"type":"Out","id":"dev3","x":248,"y":32,"label":"Q"}, + {"type":"Out","id":"dev4","x":248,"y":80,"label":"~Q"}, + {"type":"Toggle","id":"dev5","x":72,"y":32,"label":"Toggle"}, + {"type":"PushOn","id":"dev6","x":72,"y":80,"label":"PushOn"}, + {"type":"DC","id":"dev7","x":24,"y":56,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev0.in1","to":"dev2.out0"}, + {"from":"dev0.in2","to":"dev1.out0"}, + {"from":"dev1.in0","to":"dev5.out0"}, + {"from":"dev2.in0","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev4.in0","to":"dev0.out1"}, + {"from":"dev5.in0","to":"dev7.out0"}, + {"from":"dev6.in0","to":"dev7.out0"} + ] +} +); + +simcir.registerDevice('D-FF', +{ + "width":540, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":128,"y":24,"label":"D"}, + {"type":"In","id":"dev1","x":168,"y":128,"label":"CLK"}, + {"type":"NOT","id":"dev2","x":176,"y":64,"label":"NOT"}, + {"type":"NAND","id":"dev3","x":224,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev4","x":224,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev5","x":272,"y":64,"label":"RS-FF"}, + {"type":"NOT","id":"dev6","x":296,"y":128,"label":"NOT"}, + {"type":"NAND","id":"dev7","x":352,"y":32,"label":"NAND"}, + {"type":"NAND","id":"dev8","x":352,"y":96,"label":"NAND"}, + {"type":"RS-FF","id":"dev9","x":400,"y":64,"label":"RS-FF"}, + {"type":"Out","id":"dev10","x":480,"y":32,"label":"Q"}, + {"type":"Out","id":"dev11","x":480,"y":96,"label":"~Q"}, + {"type":"Toggle","id":"dev12","x":80,"y":24,"label":"Toggle"}, + {"type":"PushOn","id":"dev13","x":80,"y":128,"label":"PushOn"}, + {"type":"DC","id":"dev14","x":32,"y":72,"label":"DC"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev12.out0"}, + {"from":"dev1.in0","to":"dev13.out0"}, + {"from":"dev2.in0","to":"dev0.out0"}, + {"from":"dev3.in0","to":"dev0.out0"}, + {"from":"dev3.in1","to":"dev1.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev4.in1","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev1.out0"}, + {"from":"dev7.in0","to":"dev5.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev6.out0"}, + {"from":"dev8.in1","to":"dev5.out1"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev9.in1","to":"dev8.out0"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev9.out1"}, + {"from":"dev12.in0","to":"dev14.out0"}, + {"from":"dev13.in0","to":"dev14.out0"} + ] +} +); + +simcir.registerDevice('8bitCounter', +{ + "width":320, + "height":420, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"T-FF","id":"dev0","x":184,"y":16,"label":"T-FF"}, + {"type":"T-FF","id":"dev1","x":184,"y":64,"label":"T-FF"}, + {"type":"T-FF","id":"dev2","x":184,"y":112,"label":"T-FF"}, + {"type":"T-FF","id":"dev3","x":184,"y":160,"label":"T-FF"}, + {"type":"T-FF","id":"dev4","x":184,"y":208,"label":"T-FF"}, + {"type":"T-FF","id":"dev5","x":184,"y":256,"label":"T-FF"}, + {"type":"T-FF","id":"dev6","x":184,"y":304,"label":"T-FF"}, + {"type":"T-FF","id":"dev7","x":184,"y":352,"label":"T-FF"}, + {"type":"Out","id":"dev8","x":264,"y":16,"label":"D0"}, + {"type":"Out","id":"dev9","x":264,"y":64,"label":"D1"}, + {"type":"Out","id":"dev10","x":264,"y":112,"label":"D2"}, + {"type":"Out","id":"dev11","x":264,"y":160,"label":"D3"}, + {"type":"Out","id":"dev12","x":264,"y":208,"label":"D4"}, + {"type":"Out","id":"dev13","x":264,"y":256,"label":"D5"}, + {"type":"Out","id":"dev14","x":264,"y":304,"label":"D6"}, + {"type":"Out","id":"dev15","x":264,"y":352,"label":"D7"}, + {"type":"In","id":"dev16","x":120,"y":16,"label":"T"}, + {"type":"In","id":"dev17","x":120,"y":112,"label":"CLK"}, + {"type":"PushOn","id":"dev18","x":72,"y":112,"label":"PushOn"}, + {"type":"DC","id":"dev19","x":24,"y":16,"label":"DC"}, + {"type":"Toggle","id":"dev20","x":72,"y":16,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev16.out0"}, + {"from":"dev0.in1","to":"dev17.out0"}, + {"from":"dev1.in0","to":"dev16.out0"}, + {"from":"dev1.in1","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev16.out0"}, + {"from":"dev2.in1","to":"dev1.out0"}, + {"from":"dev3.in0","to":"dev16.out0"}, + {"from":"dev3.in1","to":"dev2.out0"}, + {"from":"dev4.in0","to":"dev16.out0"}, + {"from":"dev4.in1","to":"dev3.out0"}, + {"from":"dev5.in0","to":"dev16.out0"}, + {"from":"dev5.in1","to":"dev4.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev6.in1","to":"dev5.out0"}, + {"from":"dev7.in0","to":"dev16.out0"}, + {"from":"dev7.in1","to":"dev6.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev9.in0","to":"dev1.out0"}, + {"from":"dev10.in0","to":"dev2.out0"}, + {"from":"dev11.in0","to":"dev3.out0"}, + {"from":"dev12.in0","to":"dev4.out0"}, + {"from":"dev13.in0","to":"dev5.out0"}, + {"from":"dev14.in0","to":"dev6.out0"}, + {"from":"dev15.in0","to":"dev7.out0"}, + {"from":"dev16.in0","to":"dev20.out0"}, + {"from":"dev17.in0","to":"dev18.out0"}, + {"from":"dev18.in0","to":"dev19.out0"}, + {"from":"dev20.in0","to":"dev19.out0"} + ] +} +); + +simcir.registerDevice('HalfAdder', +{ + "width":320, + "height":160, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"Toggle","id":"dev0","x":96,"y":80,"label":"Toggle"}, + {"type":"DC","id":"dev1","x":48,"y":56,"label":"DC"}, + {"type":"AND","id":"dev2","x":192,"y":80,"label":"AND"}, + {"type":"XOR","id":"dev3","x":192,"y":32,"label":"XOR"}, + {"type":"In","id":"dev4","x":144,"y":32,"label":"A"}, + {"type":"In","id":"dev5","x":144,"y":80,"label":"B"}, + {"type":"Out","id":"dev6","x":240,"y":32,"label":"S"}, + {"type":"Out","id":"dev7","x":240,"y":80,"label":"C"}, + {"type":"Toggle","id":"dev8","x":96,"y":32,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev1.out0"}, + {"from":"dev2.in0","to":"dev4.out0"}, + {"from":"dev2.in1","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev4.out0"}, + {"from":"dev3.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev8.out0"}, + {"from":"dev5.in0","to":"dev0.out0"}, + {"from":"dev6.in0","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev1.out0"} + ] +} +); + +simcir.registerDevice('FullAdder', +{ + "width":440, + "height":200, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":120,"y":32,"label":"Cin"}, + {"type":"In","id":"dev1","x":120,"y":80,"label":"A"}, + {"type":"In","id":"dev2","x":120,"y":128,"label":"B"}, + {"type":"Toggle","id":"dev3","x":72,"y":32,"label":"Toggle"}, + {"type":"Toggle","id":"dev4","x":72,"y":80,"label":"Toggle"}, + {"type":"Toggle","id":"dev5","x":72,"y":128,"label":"Toggle"}, + {"type":"DC","id":"dev6","x":24,"y":80,"label":"DC"}, + {"type":"HalfAdder","id":"dev7","x":168,"y":104,"label":"HalfAdder"}, + {"type":"HalfAdder","id":"dev8","x":248,"y":56,"label":"HalfAdder"}, + {"type":"OR","id":"dev9","x":328,"y":104,"label":"OR"}, + {"type":"Out","id":"dev10","x":376,"y":104,"label":"Cout"}, + {"type":"Out","id":"dev11","x":376,"y":48,"label":"S"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev1.in0","to":"dev4.out0"}, + {"from":"dev2.in0","to":"dev5.out0"}, + {"from":"dev3.in0","to":"dev6.out0"}, + {"from":"dev4.in0","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev6.out0"}, + {"from":"dev7.in0","to":"dev1.out0"}, + {"from":"dev7.in1","to":"dev2.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev7.out0"}, + {"from":"dev9.in0","to":"dev8.out1"}, + {"from":"dev9.in1","to":"dev7.out1"}, + {"from":"dev10.in0","to":"dev9.out0"}, + {"from":"dev11.in0","to":"dev8.out0"} + ] +} +); + +simcir.registerDevice('4bitAdder', +{ + "width":280, + "height":480, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"FullAdder","id":"dev0","x":120,"y":72,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev1","x":120,"y":136,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev2","x":120,"y":200,"label":"FullAdder"}, + {"type":"FullAdder","id":"dev3","x":120,"y":264,"label":"FullAdder"}, + {"type":"In","id":"dev4","x":40,"y":80,"label":"A0"}, + {"type":"In","id":"dev5","x":40,"y":128,"label":"A1"}, + {"type":"In","id":"dev6","x":40,"y":176,"label":"A2"}, + {"type":"In","id":"dev7","x":40,"y":224,"label":"A3"}, + {"type":"In","id":"dev8","x":40,"y":272,"label":"B0"}, + {"type":"In","id":"dev9","x":40,"y":320,"label":"B1"}, + {"type":"In","id":"dev10","x":40,"y":368,"label":"B2"}, + {"type":"In","id":"dev11","x":40,"y":416,"label":"B3"}, + {"type":"Out","id":"dev12","x":200,"y":72,"label":"S0"}, + {"type":"Out","id":"dev13","x":200,"y":120,"label":"S1"}, + {"type":"Out","id":"dev14","x":200,"y":168,"label":"S2"}, + {"type":"Out","id":"dev15","x":200,"y":216,"label":"S3"}, + {"type":"Out","id":"dev16","x":200,"y":280,"label":"Cout"}, + {"type":"In","id":"dev17","x":40,"y":24,"label":"Cin"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev17.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev0.in2","to":"dev8.out0"}, + {"from":"dev1.in0","to":"dev0.out1"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev9.out0"}, + {"from":"dev2.in0","to":"dev1.out1"}, + {"from":"dev2.in1","to":"dev6.out0"}, + {"from":"dev2.in2","to":"dev10.out0"}, + {"from":"dev3.in0","to":"dev2.out1"}, + {"from":"dev3.in1","to":"dev7.out0"}, + {"from":"dev3.in2","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev3.out0"}, + {"from":"dev16.in0","to":"dev3.out1"} + ] +} +); + +simcir.registerDevice('2to4BinaryDecoder', +{ + "width":400, + "height":240, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"AND","numInputs":3,"id":"dev0","x":280,"y":24,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev1","x":280,"y":72,"label":"AND"}, + {"type":"AND","numInputs":3,"id":"dev2","x":280,"y":120,"label":"AND"}, + {"type":"NOT","id":"dev3","x":192,"y":48,"label":"NOT"}, + {"type":"AND","numInputs":3,"id":"dev4","x":280,"y":168,"label":"AND"}, + {"type":"NOT","id":"dev5","x":192,"y":96,"label":"NOT"}, + {"type":"In","id":"dev6","x":192,"y":176,"label":"OE"}, + {"type":"In","id":"dev7","x":128,"y":48,"label":"D0"}, + {"type":"In","id":"dev8","x":128,"y":96,"label":"D1"}, + {"type":"Toggle","id":"dev9","x":80,"y":48,"label":"Toggle"}, + {"type":"Toggle","id":"dev10","x":80,"y":96,"label":"Toggle"}, + {"type":"DC","id":"dev11","x":32,"y":96,"label":"DC"}, + {"type":"Out","id":"dev12","x":328,"y":24,"label":"A0"}, + {"type":"Out","id":"dev13","x":328,"y":72,"label":"A1"}, + {"type":"Out","id":"dev14","x":328,"y":120,"label":"A2"}, + {"type":"Out","id":"dev15","x":328,"y":168,"label":"A3"}, + {"type":"Toggle","id":"dev16","x":80,"y":144,"label":"Toggle"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev3.out0"}, + {"from":"dev0.in1","to":"dev5.out0"}, + {"from":"dev0.in2","to":"dev6.out0"}, + {"from":"dev1.in0","to":"dev7.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev1.in2","to":"dev6.out0"}, + {"from":"dev2.in0","to":"dev3.out0"}, + {"from":"dev2.in1","to":"dev8.out0"}, + {"from":"dev2.in2","to":"dev6.out0"}, + {"from":"dev3.in0","to":"dev7.out0"}, + {"from":"dev4.in0","to":"dev7.out0"}, + {"from":"dev4.in1","to":"dev8.out0"}, + {"from":"dev4.in2","to":"dev6.out0"}, + {"from":"dev5.in0","to":"dev8.out0"}, + {"from":"dev6.in0","to":"dev16.out0"}, + {"from":"dev7.in0","to":"dev9.out0"}, + {"from":"dev8.in0","to":"dev10.out0"}, + {"from":"dev9.in0","to":"dev11.out0"}, + {"from":"dev10.in0","to":"dev11.out0"}, + {"from":"dev12.in0","to":"dev0.out0"}, + {"from":"dev13.in0","to":"dev1.out0"}, + {"from":"dev14.in0","to":"dev2.out0"}, + {"from":"dev15.in0","to":"dev4.out0"}, + {"from":"dev16.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('3to8BinaryDecoder', +{ + "width":360, + "height":440, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":24,"y":144,"label":"D0"}, + {"type":"In","id":"dev1","x":24,"y":192,"label":"D1"}, + {"type":"In","id":"dev2","x":24,"y":240,"label":"D2"}, + {"type":"In","id":"dev3","x":24,"y":304,"label":"OE"}, + {"type":"NOT","id":"dev4","x":72,"y":240,"label":"NOT"}, + {"type":"AND","id":"dev5","x":120,"y":248,"label":"AND"}, + {"type":"AND","id":"dev6","x":120,"y":296,"label":"AND"}, + {"type":"2to4BinaryDecoder","id":"dev7","x":184,"y":144,"label":"2to4BinaryDecoder"}, + {"type":"2to4BinaryDecoder","id":"dev8","x":184,"y":224,"label":"2to4BinaryDecoder"}, + {"type":"Out","id":"dev9","x":296,"y":32,"label":"A0"}, + {"type":"Out","id":"dev10","x":296,"y":80,"label":"A1"}, + {"type":"Out","id":"dev11","x":296,"y":128,"label":"A2"}, + {"type":"Out","id":"dev12","x":296,"y":176,"label":"A3"}, + {"type":"Out","id":"dev13","x":296,"y":224,"label":"A4"}, + {"type":"Out","id":"dev14","x":296,"y":272,"label":"A5"}, + {"type":"Out","id":"dev15","x":296,"y":320,"label":"A6"}, + {"type":"Out","id":"dev16","x":296,"y":368,"label":"A7"} + ], + "connectors":[ + {"from":"dev4.in0","to":"dev2.out0"}, + {"from":"dev5.in0","to":"dev4.out0"}, + {"from":"dev5.in1","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev2.out0"}, + {"from":"dev6.in1","to":"dev3.out0"}, + {"from":"dev7.in0","to":"dev0.out0"}, + {"from":"dev7.in1","to":"dev1.out0"}, + {"from":"dev7.in2","to":"dev5.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev7.out1"}, + {"from":"dev11.in0","to":"dev7.out2"}, + {"from":"dev12.in0","to":"dev7.out3"}, + {"from":"dev13.in0","to":"dev8.out0"}, + {"from":"dev14.in0","to":"dev8.out1"}, + {"from":"dev15.in0","to":"dev8.out2"}, + {"from":"dev16.in0","to":"dev8.out3"} + ] +} +); + +simcir.registerDevice('4to16BinaryDecoder', +{ + "width":440, + "height":360, + "showToolbox":false, + "toolbox":[ + ], + "devices":[ + {"type":"In","id":"dev0","x":32,"y":56,"label":"D0"}, + {"type":"In","id":"dev1","x":32,"y":104,"label":"D1"}, + {"type":"In","id":"dev2","x":32,"y":152,"label":"D2"}, + {"type":"In","id":"dev3","x":32,"y":200,"label":"D3"}, + {"type":"In","id":"dev4","x":32,"y":264,"label":"OE"}, + {"type":"NOT","id":"dev5","x":80,"y":200,"label":"NOT"}, + {"type":"AND","id":"dev6","x":136,"y":208,"label":"AND"}, + {"type":"AND","id":"dev7","x":136,"y":256,"label":"AND"}, + {"type":"3to8BinaryDecoder","id":"dev8","x":208,"y":32,"label":"3to8BinaryDecoder"}, + {"type":"3to8BinaryDecoder","id":"dev9","x":208,"y":184,"label":"3to8BinaryDecoder"}, + {"type":"BusOut","id":"dev10","x":320,"y":88,"label":"BusOut"}, + {"type":"BusOut","id":"dev11","x":320,"y":184,"label":"BusOut"}, + {"type":"Out","id":"dev12","x":376,"y":128,"label":"A0"}, + {"type":"Out","id":"dev13","x":376,"y":184,"label":"A1"} + ], + "connectors":[ + {"from":"dev5.in0","to":"dev3.out0"}, + {"from":"dev6.in0","to":"dev5.out0"}, + {"from":"dev6.in1","to":"dev4.out0"}, + {"from":"dev7.in0","to":"dev3.out0"}, + {"from":"dev7.in1","to":"dev4.out0"}, + {"from":"dev8.in0","to":"dev0.out0"}, + {"from":"dev8.in1","to":"dev1.out0"}, + {"from":"dev8.in2","to":"dev2.out0"}, + {"from":"dev8.in3","to":"dev6.out0"}, + {"from":"dev9.in0","to":"dev0.out0"}, + {"from":"dev9.in1","to":"dev1.out0"}, + {"from":"dev9.in2","to":"dev2.out0"}, + {"from":"dev9.in3","to":"dev7.out0"}, + {"from":"dev10.in0","to":"dev8.out0"}, + {"from":"dev10.in1","to":"dev8.out1"}, + {"from":"dev10.in2","to":"dev8.out2"}, + {"from":"dev10.in3","to":"dev8.out3"}, + {"from":"dev10.in4","to":"dev8.out4"}, + {"from":"dev10.in5","to":"dev8.out5"}, + {"from":"dev10.in6","to":"dev8.out6"}, + {"from":"dev10.in7","to":"dev8.out7"}, + {"from":"dev11.in0","to":"dev9.out0"}, + {"from":"dev11.in1","to":"dev9.out1"}, + {"from":"dev11.in2","to":"dev9.out2"}, + {"from":"dev11.in3","to":"dev9.out3"}, + {"from":"dev11.in4","to":"dev9.out4"}, + {"from":"dev11.in5","to":"dev9.out5"}, + {"from":"dev11.in6","to":"dev9.out6"}, + {"from":"dev11.in7","to":"dev9.out7"}, + {"from":"dev12.in0","to":"dev10.out0"}, + {"from":"dev13.in0","to":"dev11.out0"} + ] +} +); + +simcir.registerDevice('OSCo', + { + "width":300, + "height":100, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK(0.5MHZ)"}, + {"type":"OSC","freq":2,"label":"CLK(2MHZ)"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"OSC","freq":0.5,"label":"CLK","id":"dev0","x":48,"y":64}, + {"type":"Delay","delay":1000,"id":"dev1","x":120,"y":72,"label":"Delay","state":{"direction":0}}, + {"type":"Out","id":"dev2","x":176,"y":64,"label":"Out"} + ], + "connectors":[ + {"from":"dev1.in0","to":"dev0.out0"}, + {"from":"dev2.in0","to":"dev1.out0"} + ] + + }); + +simcir.registerDevice('PassTransistor', + { + "width":400, + "height":300, + "showToolbox":false, + "toolbox":[ + {"type":"In"}, + {"type":"Out"}, + {"type":"PMOS"}, + {"type":"NMOS"}, + {"type":"Delay","delay":1000}, + {"type":"OSC","freq":0.5,"label":"CLK"}, + {"type":"LED"}, + {"type":"DSO","label":"Graph"} + ], + "devices":[ + {"type":"PMOS","id":"dev0","x":72,"y":128,"label":"PMOS"}, + {"type":"NMOS","id":"dev1","x":272,"y":128,"label":"NMOS"}, + {"type":"In","id":"dev2","x":40,"y":32,"label":"PGate"}, + {"type":"In","id":"dev3","x":240,"y":32,"label":"NGate"}, + {"type":"In","id":"dev4","x":120,"y":224,"label":"In"}, + {"type":"Out","id":"dev5","x":200,"y":224,"label":"Out"} + ], + "connectors":[ + {"from":"dev0.in0","to":"dev2.out0"}, + {"from":"dev0.in1","to":"dev4.out0"}, + {"from":"dev1.in0","to":"dev3.out0"}, + {"from":"dev1.in1","to":"dev5.out0"}, + {"from":"dev4.in0","to":"dev1.out0"}, + {"from":"dev5.in0","to":"dev0.out0"} + ] +}); \ No newline at end of file diff --git a/project3/Libraries/simcirjs/simcir.css b/project3/Libraries/simcirjs/simcir.css new file mode 100644 index 00000000..06c4aa04 --- /dev/null +++ b/project3/Libraries/simcirjs/simcir.css @@ -0,0 +1,218 @@ +/* + * SimcirJS + * + * Copyright (c) 2014 Kazuhiko Arase + * + * URL: http://www.d-project.com/ + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +.simcir-body { + display: inline-block; +} + +.simcir-workspace { + cursor: default; + overflow: hidden; + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +.simcir-pin-hole { + fill: #cccccc; + stroke: none; +} + +.simcir-toolbox { + fill: #eeeeee; +} + +.simcir-scrollbar { + fill: #cccccc; +} + +.simcir-scrollbar-bar { + fill: #aaaaaa; +} + +.simcir-scrollbar-bar:hover { + fill: #999999; +} + +.simcir-connector { + stroke-width: 1; + stroke: #0000ff; + stroke-linecap: round; +} + +.simcir-connector-hot { + /* stroke: #ff0000; */ +} + +.simcir-joint-point { + stroke-width: 3; +} + +.simcir-device { + fill: #cccccc; + stroke-width: 2; + stroke: #666666; +} + +.simcir-device-selected { + stroke: #0000ff; +} + +.simcir-device-label { + fill: #000000; + stroke-width: 0; + stroke: none; +} + +.simcir-selection-rect { + fill: none; + stroke-width: 1; + stroke: #0000ff; +} + +.simcir-node-type-in { + fill: #ffcc00; +} + +.simcir-node-type-out { + fill: #ffffff; +} + +.simcir-node { + stroke-width: 1; + stroke: #000000; +} + +.simcir-node-hot { + stroke: #ff0000; +} + +.simcir-node-hover { + stroke: #ffff00; +} + +.simcir-node-label { + fill: #000000; + stroke: none; +} + +.simcir-port { + stroke-width: 1; + stroke: #000000; +} + +.simcir-port-hole { + stroke: none; + fill: #000000; +} + +.simcir-json-data-area { + padding: 0px; + outline: none; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.simcir-dialog { + padding: 4px; + border-width: 2px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; + -webkit-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); +} + +.simcir-dialog-title { + margin-right: 4px; +} + +.simcir-dialog-close-button { + fill: #666666; + stroke: none; +} + +.simcir-dialog-close-button:hover { + fill: #888888; + stroke: none; +} + +.simcir-dialog-close-button-symbol { + fill: none; + stroke: #ffffff; + stroke-width: 2; +} + +.simcir-label-editor { + width: 100px; + border-width: 1px; + border-style: solid; + border-color: #cccccc; + background-color: #f0f0f0; + outline: none; +} + +.simcir-label-editor::-ms-clear { + display: none; + width: 0; + height: 0; +} + +/* simcir doc */ + +TABLE.simcir-doc-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-table, +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-table TH, +TABLE.simcir-doc-table TD { + padding: 16px; +} + +TABLE.simcir-doc-params-table { + border-collapse: collapse; +} + +TABLE.simcir-doc-params-table, +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + border-width: 1px; + border-style: solid; + border-color: #666666; +} + +TABLE.simcir-doc-params-table TH, +TABLE.simcir-doc-params-table TD { + padding: 2px; +} + +.simcir-doc-title { + font-weight: bold; + margin: 16px 0px 0px 0px; +} + +.simcir-doc-code { + padding: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #f0f0f0; +} diff --git a/project3/Libraries/simcirjs/simcir.js b/project3/Libraries/simcirjs/simcir.js new file mode 100644 index 00000000..91a68ca1 --- /dev/null +++ b/project3/Libraries/simcirjs/simcir.js @@ -0,0 +1,2726 @@ +// +// SimcirJS +// +// Copyright (c) 2014 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// + +// includes following device types: +// In +// Out +// Joint + +/* + Changes made by Utkarsh Chhapekar: + + dataFinal is a global variable that now stores the dynamic data when the + circuit is generated. + + For debugging purposes find the console.log(); functions in this file, all + of these functions are commented so remove the // and run use console on browser + to debug. + Note: The ones which are not commented are part of the default debugging options + of SimCir. + +*/ + +'use strict'; + +var simcir = {}; + +var dataFinal; +// +// https://github.com/kazuhikoarase/lessQuery +// +simcir.$ = function() { + + //console.log("in first main function"); + + var debug = location.hash == '#debug'; + + var cacheIdKey = '.lessqCacheId'; + var cacheIdSeq = 0; + var cache = {}; + + var getCache = function(elm) { + var cacheId = elm[cacheIdKey]; + if (typeof cacheId == 'undefined') { + elm[cacheIdKey] = cacheId = cacheIdSeq++; + cache[cacheId] = debug? { e : elm } : {}; + } + return cache[cacheId]; + }; + + var hasCache = function(elm) { + return typeof elm[cacheIdKey] != 'undefined'; + }; + + if (debug) { + var lastKeys = {}; + var showCacheCount = function() { + var cnt = 0; + var keys = {}; + for (var k in cache) { + cnt += 1; + if (!lastKeys[k]) { + console.log(cache[k]); + } + keys[k] = true; + } + lastKeys = keys; + console.log('cacheCount:' + cnt); + window.setTimeout(showCacheCount, 5000); + }; + showCacheCount(); + } + + var removeCache = function(elm) { + + if (typeof elm[cacheIdKey] != 'undefined') { + + // remove all listeners + var cacheId = elm[cacheIdKey]; + var listenerMap = cache[cacheId].listenerMap; + for (var type in listenerMap) { + var listeners = listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + elm.removeEventListener(type, listeners[i]); + } + } + + // delete refs + delete elm[cacheIdKey]; + delete cache[cacheId]; + } + + while (elm.firstChild) { + removeCache(elm.firstChild); + elm.removeChild(elm.firstChild); + } + }; + + var getData = function(elm) { + if (!getCache(elm).data) { getCache(elm).data = {}; } + return getCache(elm).data; + }; + + var getListeners = function(elm, type) { + if (!getCache(elm).listenerMap) { + getCache(elm).listenerMap = {}; } + if (!getCache(elm).listenerMap[type]) { + getCache(elm).listenerMap[type] = []; } + return getCache(elm).listenerMap[type]; + }; + + // add / remove event listener. + var addEventListener = function(elm, type, listener, add) { + var listeners = getListeners(elm, type); + var newListeners = []; + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] != listener) { + newListeners.push(listeners[i]); + } + } + if (add) { newListeners.push(listener); } + getCache(elm).listenerMap[type] = newListeners; + return true; + }; + + var CustomEvent = { + preventDefault : function() { this._pD = true; }, + stopPropagation : function() { this._sP = true; }, + stopImmediatePropagation : function() { this._sIp = true; } + }; + + var trigger = function(elm, type, data) { + var event = { type : type, target : elm, currentTarget : null, + _pD : false, _sP : false, _sIp : false, __proto__ : CustomEvent }; + for (var e = elm; e != null; e = e.parentNode) { + if (!hasCache(e) ) { continue; } + if (!getCache(e).listenerMap) { continue; } + if (!getCache(e).listenerMap[type]) { continue; } + event.currentTarget = e; + var listeners = getCache(e).listenerMap[type]; + for (var i = 0; i < listeners.length; i += 1) { + listeners[i].call(e, event, data); + if (event._sIp) { return; } + } + if (event._sP) { return; } + } + }; + + var data = function(elm, kv) { + if (arguments.length == 2) { + if (typeof kv == 'string') return getData(elm)[kv]; + for (var k in kv) { getData(elm)[k] = kv[k]; } + } else if (arguments.length == 3) { + getData(elm)[kv] = arguments[2]; + } + return elm; + }; + + var extend = function(o1, o2) { + for (var k in o2) { o1[k] = o2[k]; } return o1; + }; + + var each = function(it, callback) { + if (typeof it.splice == 'function') { + for (var i = 0; i < it.length; i += 1) { callback(i, it[i]); } + } else { + for (var k in it) { callback(k, it[k]); } + } + }; + + var grep = function(list, accept) { + var newList = []; + for (var i = 0; i < list.length; i += 1) { + var item = list[i]; + if (accept(item) ) { + newList.push(item); + } + } + return newList; + }; + + var addClass = function(elm, className, add) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + var newClasses = ''; + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { continue; } + newClasses += ' ' + classes[i]; + } + if (add) { newClasses += ' ' + className; } + elm.setAttribute('class', newClasses); + }; + + var hasClass = function(elm, className) { + var classes = (elm.getAttribute('class') || '').split(/\s+/g); + for (var i = 0; i < classes.length; i+= 1) { + if (classes[i] == className) { return true; } + } + return false; + }; + + var matches = function(elm, selector) { + if (elm.nodeType != 1) { + return false; + } else if (!selector) { + return true; + } + var sels = selector.split(/[,\s]+/g); + for (var i = 0; i < sels.length; i += 1) { + var sel = sels[i]; + if (sel.substring(0, 1) == '#') { + throw 'not supported:' + sel; + } else if (sel.substring(0, 1) == '.') { + if (hasClass(elm, sel.substring(1) ) ) { + return true; + } + } else { + if (elm.tagName.toUpperCase() == sel.toUpperCase() ) { + return true; + } + } + } + return false; + }; + + var parser = new window.DOMParser(); + + var html = function(html) { + var doc = parser.parseFromString( + '
    ' + html + '
    ', + 'text/xml').firstChild; + var elms = []; + while (doc.firstChild) { + elms.push(doc.firstChild); + doc.removeChild(doc.firstChild); + } + elms.__proto__ = fn; + return elms; + }; + + var pxToNum = function(px) { + if (typeof px != 'string' || px.length <= 2 || + px.charAt(px.length - 2) != 'p' || + px.charAt(px.length - 1) != 'x') { + throw 'illegal px:' + px; + } + return +px.substring(0, px.length - 2); + }; + + var buildQuery = function(data) { + var query = ''; + for (var k in data) { + if (query.length > 0) { + query += '&'; + } + query += window.encodeURIComponent(k); + query += '='; + query += window.encodeURIComponent(data[k]); + } + return query; + }; + + var parseResponse = function() { + + var contentType = this.getResponseHeader('content-type'); + if (contentType != null) { + contentType = contentType.replace(/\s*;.+$/, '').toLowerCase(); + } + + if (contentType == 'text/xml' || + contentType == 'application/xml') { + return parser.parseFromString(this.responseText, 'text/xml'); + } else if (contentType == 'text/json' || + contentType == 'application/json') { + return JSON.parse(this.responseText); + } else { + return this.response; + } + }; + + var ajax = function(params) { + + params = extend({ + url: '', + method : 'GET', + contentType : 'application/x-www-form-urlencoded;charset=UTF-8', + cache: true, + processData: true, + async : true + }, params); + + if (!params.async) { + // force async. + throw 'not supported.'; + } + + var method = params.method.toUpperCase(); + var data = null; + var contentType = params.contentType; + if (method == 'POST' || method == 'PUT') { + data = (typeof params.data == 'object' && params.processData)? + buildQuery(params.data) : params.data; + } else { + contentType = false; + } + + var xhr = params.xhr? params.xhr() : new window.XMLHttpRequest(); + xhr.open(method, params.url, params.async); + if (contentType !== false) { + xhr.setRequestHeader('Content-Type', contentType); + } + xhr.onreadystatechange = function() { + if(xhr.readyState == window.XMLHttpRequest.DONE) { + try { + if (xhr.status == 200) { + done.call(xhr, parseResponse.call(this) ); + } else { + fail.call(xhr); + } + } finally { + always.call(xhr); + } + } + }; + + // call later + window.setTimeout(function() { xhr.send(data); }, 0); + + // callbacks + var done = function(data) {}; + var fail = function() {}; + var always = function() {}; + + var $ = { + done : function(callback) { done = callback; return $; }, + fail : function(callback) { fail = callback; return $; }, + always : function(callback) { always = callback; return $; }, + abort : function() { xhr.abort(); return $; } + }; + return $; + }; + + // 1. for single element + var fn = { + attr : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.getAttribute(kv); + for (var k in kv) { this.setAttribute(k, kv[k]); } + } else if (arguments.length == 2) { + this.setAttribute(kv, arguments[1]); + } + return this; + }, + prop : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this[kv]; + for (var k in kv) { this[k] = kv[k]; } + } else if (arguments.length == 2) { + this[kv] = arguments[1]; + } + return this; + }, + css : function(kv) { + if (arguments.length == 1) { + if (typeof kv == 'string') return this.style[kv]; + for (var k in kv) { this.style[k] = kv[k]; } + } else if (arguments.length == 2) { + this.style[kv] = arguments[1]; + } + return this; + }, + data : function(kv) { + var args = [ this ]; + for (var i = 0; i < arguments.length; i += 1) { + args.push(arguments[i]); + }; + return data.apply(null, args); + }, + val : function() { + if (arguments.length == 0) { + return this.value || ''; + } else if (arguments.length == 1) { + this.value = arguments[0]; + } + return this; + }, + on : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.addEventListener(types[i], listener); + addEventListener(this, types[i], listener, true); + } + return this; + }, + off : function(type, listener) { + var types = type.split(/\s+/g); + for (var i = 0; i < types.length; i += 1) { + this.removeEventListener(types[i], listener); + addEventListener(this, types[i], listener, false); + } + return this; + }, + trigger : function(type, data) { + trigger(this, type, data); + return this; + }, + offset : function() { + var off = { left : 0, top : 0 }; + var base = null; + for (var e = this; e.parentNode != null; e = e.parentNode) { + if (e.offsetParent != null) { + base = e; + break; + } + } + if (base != null) { + for (var e = base; e.offsetParent != null; e = e.offsetParent) { + off.left += e.offsetLeft; + off.top += e.offsetTop; + } + } + for (var e = this; e.parentNode != null && + e != document.body; e = e.parentNode) { + off.left -= e.scrollLeft; + off.top -= e.scrollTop; + } + return off; + }, + append : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + this.appendChild(elms[i]); + } + return this; + }, + prepend : function(elms) { + if (typeof elms == 'string') { + elms = html(elms); + } + for (var i = 0; i < elms.length; i += 1) { + if (this.firstChild) { + this.insertBefore(elms[i], this.firstChild); + } else { + this.appendChild(elms[i]); + } + } + return this; + }, + insertBefore : function(elms) { + var elm = elms[0]; + elm.parentNode.insertBefore(this, elm); + return this; + }, + insertAfter : function(elms) { + var elm = elms[0]; + if (elm.nextSibling) { + elm.parentNode.insertBefore(this, elm.nextSibling); + } else { + elm.parentNode.appendChild(this); + } + return this; + }, + remove : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + removeCache(this); + return this; + }, + detach : function() { + if (this.parentNode) { this.parentNode.removeChild(this); } + return this; + }, + parent : function() { + return $(this.parentNode); + }, + closest : function(selector) { + for (var e = this; e != null; e = e.parentNode) { + if (matches(e, selector) ) { + return $(e); + } + } + return $(); + }, + find : function(selector) { + var elms = []; + var childNodes = this.querySelectorAll(selector); + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + }, + children : function(selector) { + var elms = []; + var childNodes = this.childNodes; + for (var i = 0; i < childNodes.length; i += 1) { + if (matches(childNodes.item(i), selector) ) { + elms.push(childNodes.item(i) ); + } + } + elms.__proto__ = fn; + return elms; + }, + index : function(selector) { + return Array.prototype.indexOf.call( + $(this).parent().children(selector), this); + }, + clone : function() { return $(this.cloneNode(true) ); }, + focus : function() { this.focus(); return this; }, + select : function() { this.select(); return this; }, + submit : function() { this.submit(); return this; }, + scrollLeft : function() { + if (arguments.length == 0) return this.scrollLeft; + this.scrollLeft = arguments[0]; return this; + }, + scrollTop : function() { + if (arguments.length == 0) return this.scrollTop; + this.scrollTop = arguments[0]; return this; + }, + html : function() { + if (arguments.length == 0) return this.innerHTML; + this.innerHTML = arguments[0]; return this; + }, + text : function() { + if (typeof this.textContent != 'undefined') { + if (arguments.length == 0) return this.textContent; + this.textContent = arguments[0]; return this; + } else { + if (arguments.length == 0) return this.innerText; + this.innerText = arguments[0]; return this; + } + }, + outerWidth : function(margin) { + var w = this.offsetWidth; + if (margin) { + var cs = window.getComputedStyle(this, null); + return w + pxToNum(cs.marginLeft) + pxToNum(cs.marginRight); + } + return w; + }, + innerWidth : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth); + }, + width : function() { + if (this == window) return this.innerWidth; + var cs = window.getComputedStyle(this, null); + return this.offsetWidth - + pxToNum(cs.borderLeftWidth) - pxToNum(cs.borderRightWidth) - + pxToNum(cs.paddingLeft) - pxToNum(cs.paddingRight); + }, + outerHeight : function(margin) { + var h = this.offsetHeight; + if (margin) { + var cs = window.getComputedStyle(this, null); + return h + pxToNum(cs.marginTop) + pxToNum(cs.marginBottom); + } + return h; + }, + innerHeight : function() { + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth); + }, + height : function() { + if (this == window) return this.innerHeight; + var cs = window.getComputedStyle(this, null); + return this.offsetHeight - + pxToNum(cs.borderTopWidth) - pxToNum(cs.borderBottomWidth) - + pxToNum(cs.paddingTop) - pxToNum(cs.paddingBottom); + }, + addClass : function(className) { + addClass(this, className, true); return this; + }, + removeClass : function(className) { + addClass(this, className, false); return this; + }, + hasClass : function(className) { + return hasClass(this, className); + } + }; + + // 2. to array + each(fn, function(name, func) { + fn[name] = function() { + var newRet = null; + for (var i = 0; i < this.length; i += 1) { + var elm = this[i]; + var ret = func.apply(elm, arguments); + if (elm !== ret) { + if (ret != null && ret.__proto__ == fn) { + if (newRet == null) { newRet = []; } + newRet = newRet.concat(ret); + } else { + return ret; + } + } + } + if (newRet != null) { + newRet.__proto__ = fn; + return newRet; + } + return this; + }; + }); + + // 3. for array + fn = extend(fn, { + each : function(callback) { + for (var i = 0; i < this.length; i += 1) { + callback.call(this[i], i); + } + return this; + }, + first : function() { + return $(this.length > 0? this[0] : null); + }, + last : function() { + return $(this.length > 0? this[this.length - 1] : null); + } + }); + + var $ = function(target) { + + if (typeof target == 'function') { + + // ready + return $(document).on('DOMContentLoaded', target); + + } else if (typeof target == 'string') { + + if (target.charAt(0) == '<') { + + // dom creation + return html(target); + + } else { + + // query + var childNodes = document.querySelectorAll(target); + var elms = []; + for (var i = 0; i < childNodes.length; i += 1) { + elms.push(childNodes.item(i) ); + } + elms.__proto__ = fn; + return elms; + } + + } else if (typeof target == 'object' && target != null) { + + if (target.__proto__ == fn) { + return target; + } else { + var elms = []; + elms.push(target); + elms.__proto__ = fn; + return elms; + } + + } else { + + var elms = []; + elms.__proto__ = fn; + return elms; + } + }; + + return extend($, { + fn : fn, extend : extend, each : each, grep : grep, + data : data, ajax : ajax }); +}(); + +!function($s) { + //console.log("in second main function"); + var $ = $s.$; + + var createSVGElement = function(tagName) { + return $(document.createElementNS( + 'http://www.w3.org/2000/svg', tagName) ); + }; + + var createSVG = function(w, h) { + return createSVGElement('svg').attr({ + version: '1.1', + width: w, height: h, + viewBox: '0 0 ' + w + ' ' + h + }); + }; + + var graphics = function($target) { + var attr = {}; + var buf = ''; + var moveTo = function(x, y) { + buf += ' M ' + x + ' ' + y; + }; + var lineTo = function(x, y) { + buf += ' L ' + x + ' ' + y; + }; + var curveTo = function(x1, y1, x, y) { + buf += ' Q ' + x1 + ' ' + y1 + ' ' + x + ' ' + y; + }; + var closePath = function(close) { + if (close) { + // really close path. + buf += ' Z'; + } + $target.append(createSVGElement('path'). + attr('d', buf).attr(attr) ); + buf = ''; + }; + var drawRect = function(x, y, width, height) { + $target.append(createSVGElement('rect'). + attr({x: x, y: y, width: width, height: height}).attr(attr) ); + }; + var drawCircle = function(x, y, r) { + $target.append(createSVGElement('circle'). + attr({cx: x, cy: y, r: r}).attr(attr) ); + }; + return { + attr: attr, + moveTo: moveTo, + lineTo: lineTo, + curveTo: curveTo, + closePath: closePath, + drawRect: drawRect, + drawCircle: drawCircle + }; + }; + + var transform = function() { + var attrX = 'simcir-transform-x'; + var attrY = 'simcir-transform-y'; + var attrRotate = 'simcir-transform-rotate'; + var num = function($o, k) { + var v = $o.attr(k); + return v? +v : 0; + }; + return function($o, x, y, rotate) { + if (arguments.length >= 3) { + var transform = 'translate(' + x + ' ' + y + ')'; + if (rotate) { + transform += ' rotate(' + rotate + ')'; + } + $o.attr('transform', transform); + $o.attr(attrX, x); + $o.attr(attrY, y); + $o.attr(attrRotate, rotate); + } else if (arguments.length == 1) { + return {x: num($o, attrX), y: num($o, attrY), + rotate: num($o, attrRotate)}; + } + }; + }(); + + var offset = function($o) { + var x = 0; + var y = 0; + while ($o[0].nodeName != 'svg') { + var pos = transform($o); + x += pos.x; + y += pos.y; + $o = $o.parent(); + } + return {x: x, y: y}; + }; + + var enableEvents = function($o, enable) { + $o.css('pointer-events', enable? 'visiblePainted' : 'none'); + }; + + var disableSelection = function($o) { + $o.each(function() { + this.onselectstart = function() { return false; }; + }).css('-webkit-user-select', 'none'); + }; + + var controller = function() { + var id = 'controller'; + return function($ui, controller) { + if (arguments.length == 1) { + return $.data($ui[0], id); + } else if (arguments.length == 2) { + $.data($ui[0], id, controller); + } + }; + }(); + + var eventQueue = function() { + var delay = 50; // ms + var limit = 40; // ms + var _queue = null; + var postEvent = function(event) { + if (_queue == null) { + _queue = []; + } + _queue.push(event); + }; + var dispatchEvent = function() { + var queue = _queue; + _queue = null; + while (queue.length > 0) { + var e = queue.shift(); + e.target.trigger(e.type); + } + }; + var getTime = function() { + return new Date().getTime(); + }; + var timerHandler = function() { + var start = getTime(); + while (_queue != null && getTime() - start < limit) { + dispatchEvent(); + } + window.setTimeout(timerHandler, + Math.max(delay - limit, delay - (getTime() - start) ) ); + }; + timerHandler(); + return { + postEvent: postEvent + }; + }(); + + var unit = 16; + var fontSize = 12; + + var createLabel = function(text) { + return createSVGElement('text'). + text(text). + css('font-size', fontSize + 'px'); + }; + + var createNode = function(type, label, description, headless) { + var $node = createSVGElement('g'). + attr('simcir-node-type', type); + if (!headless) { + $node.attr('class', 'simcir-node'); + } + var node = createNodeController({ + $ui: $node, type: type, label: label, + description: description, headless: headless}); + if (type == 'in') { + controller($node, createInputNodeController(node) ); + } else if (type == 'out') { + controller($node, createOutputNodeController(node) ); + } else { + throw 'unknown type:' + type; + } + return $node; + }; + + var isActiveNode = function($o) { + return $o.closest('.simcir-node').length == 1 && + $o.closest('.simcir-toolbox').length == 0; + }; + + var createNodeController = function(node) { + var _value = null; + var setValue = function(value, force) { + if (_value === value && !force) { + return; + } + _value = value; + eventQueue.postEvent({target: node.$ui, type: 'nodeValueChange'}); + }; + var getValue = function() { + return _value; + }; + + if (!node.headless) { + + node.$ui.attr('class', 'simcir-node simcir-node-type-' + node.type); + + var $circle = createSVGElement('circle'). + attr({cx: 0, cy: 0, r: 4}); + node.$ui.on('mouseover', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.addClass('simcir-node-hover'); + } + }); + node.$ui.on('mouseout', function(event) { + if (isActiveNode(node.$ui) ) { + node.$ui.removeClass('simcir-node-hover'); + } + }); + node.$ui.append($circle); + var appendLabel = function(text, align) { + var $label = createLabel(text). + attr('class', 'simcir-node-label'); + enableEvents($label, false); + if (align == 'right') { + $label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + $label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } + node.$ui.append($label); + }; + if (node.label) { + if (node.type == 'in') { + appendLabel(node.label, 'right'); + } else if (node.type == 'out') { + appendLabel(node.label, 'left'); + } + } + if (node.description) { + if (node.type == 'in') { + appendLabel(node.description, 'left'); + } else if (node.type == 'out') { + appendLabel(node.description, 'right'); + } + } + node.$ui.on('nodeValueChange', function(event) { + if (_value != null) { + node.$ui.addClass('simcir-node-hot'); + } else { + node.$ui.removeClass('simcir-node-hot'); + } + }); + } + + return $.extend(node, { + setValue: setValue, + getValue: getValue + }); + }; + + var createInputNodeController = function(node) { + var output = null; + var setOutput = function(outNode) { + output = outNode; + }; + var getOutput = function() { + return output; + }; + return $.extend(node, { + setOutput: setOutput, + getOutput: getOutput + }); + }; + + var createOutputNodeController = function(node) { + var inputs = []; + var super_setValue = node.setValue; + var setValue = function(value) { + super_setValue(value); + for (var i = 0; i < inputs.length; i += 1) { + inputs[i].setValue(value); + } + }; + var connectTo = function(inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + inNode.setOutput(node); + inputs.push(inNode); + inNode.setValue(node.getValue(), true); + }; + var disconnectFrom = function(inNode) { + if (inNode.getOutput() != node) { + throw 'not connected.'; + } + inNode.setOutput(null); + inNode.setValue(null, true); + inputs = $.grep(inputs, function(v) { + return v != inNode; + }); + }; + var getInputs = function() { + return inputs; + }; + return $.extend(node, { + setValue: setValue, + getInputs: getInputs, + connectTo: connectTo, + disconnectFrom: disconnectFrom + }); + }; + + var createDevice = function(deviceDef, headless, scope) { + headless = headless || false; + scope = scope || null; + var $dev = createSVGElement('g'); + if (!headless) { + $dev.attr('class', 'simcir-device'); + } + controller($dev, createDeviceController( + {$ui: $dev, deviceDef: deviceDef, + headless: headless, scope: scope, doc: null}) ); + var factory = factories[deviceDef.type]; + if (factory) { + factory(controller($dev) ); + } + if (!headless) { + controller($dev).createUI(); + } + return $dev; + }; + + var createDeviceController = function(device) { + var inputs = []; + var outputs = []; + var addInput = function(label, description) { + var $node = createNode('in', label, description, device.headless); + $node.on('nodeValueChange', function(event) { + device.$ui.trigger('inputValueChange'); + }); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + inputs.push(node); + return node; + }; + var addOutput = function(label, description) { + var $node = createNode('out', label, description, device.headless); + if (!device.headless) { + device.$ui.append($node); + } + var node = controller($node); + outputs.push(node); + return node; + }; + var getInputs = function() { + return inputs; + }; + var getOutputs = function() { + return outputs; + }; + var disconnectAll = function() { + $.each(getInputs(), function(i, inNode) { + var outNode = inNode.getOutput(); + if (outNode != null) { + outNode.disconnectFrom(inNode); + } + }); + $.each(getOutputs(), function(i, outNode) { + $.each(outNode.getInputs(), function(i, inNode) { + outNode.disconnectFrom(inNode); + }); + }); + }; + device.$ui.on('dispose', function() { + $.each(getInputs(), function(i, inNode) { + inNode.$ui.remove(); + }); + $.each(getOutputs(), function(i, outNode) { + outNode.$ui.remove(); + }); + device.$ui.remove(); + } ); + + var selected = false; + var setSelected = function(value) { + selected = value; + device.$ui.trigger('deviceSelect'); + }; + var isSelected = function() { + return selected; + }; + + var label = device.deviceDef.label; + var defaultLabel = device.deviceDef.type; + if (typeof label == 'undefined') { + label = defaultLabel; + } + var setLabel = function(value) { + value = value.replace(/^\s+|\s+$/g, ''); + label = value || defaultLabel; + device.$ui.trigger('deviceLabelChange'); + }; + var getLabel = function() { + return label; + }; + + var getSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var getMOSSize = function() { + var nodes = Math.max(device.getInputs().length, + device.getOutputs().length); + return { width: unit * 2, + height: unit * Math.max(2, device.halfPitch? + (nodes + 1) / 2 : nodes)}; + }; + + var layoutUI = function() { + + var size = device.getSize(); + var w = size.width; + var h = size.height; + + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: 0, width: w, height: h}); + + var pitch = device.halfPitch? unit / 2 : unit; + var layoutNodes = function(nodes, x) { + var offset = (h - pitch * (nodes.length - 1) ) / 2; + $.each(nodes, function(i, node) { + transform(node.$ui, x, pitch * i + offset); + }); + }; + layoutNodes(getInputs(), 0); + layoutNodes(getOutputs(), w); + + device.$ui.children('.simcir-device-label'). + attr({x: w / 2, y: h + fontSize}); + }; + + var createUI = function() { + + device.$ui.attr('class', 'simcir-device'); + device.$ui.on('deviceSelect', function() { + if (selected) { + $(this).addClass('simcir-device-selected'); + } else { + $(this).removeClass('simcir-device-selected'); + } + }); + + var $body = createSVGElement('rect'). + attr('class', 'simcir-device-body'). + attr('rx', 2).attr('ry', 2); + device.$ui.prepend($body); + + var $label = createLabel(label). + attr('class', 'simcir-device-label'). + attr('text-anchor', 'middle'); + device.$ui.on('deviceLabelChange', function() { + $label.text(getLabel() ); + }); + + var label_dblClickHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var $workspace = $(event.target).closest('.simcir-workspace'); + if (!controller($workspace).data().editable) { + return; + } + var title = 'Enter device name '; + var $labelEditor = $(''). + addClass('simcir-label-editor'). + val($label.text() ). + on('keydown', function(event) { + if (event.keyCode == 13) { + // ENTER + setLabel($(this).val() ); + $dlg.remove(); + } else if (event.keyCode == 27) { + // ESC + $dlg.remove(); + } + } ); + var $placeHolder = $('
    '). + append($labelEditor); + var $dlg = showDialog(title, $placeHolder); + $labelEditor.focus(); + }; + device.$ui.on('deviceAdd', function() { + $label.on('dblclick', label_dblClickHandler); + } ); + device.$ui.on('deviceRemove', function() { + $label.off('dblclick', label_dblClickHandler); + } ); + device.$ui.append($label); + + layoutUI(); + + }; + + var getState = function() { return null; }; + + return $.extend(device, { + addInput: addInput, + addOutput: addOutput, + getInputs: getInputs, + getOutputs: getOutputs, + disconnectAll: disconnectAll, + setSelected: setSelected, + isSelected: isSelected, + getLabel: getLabel, + halfPitch: false, + getSize: getSize, + getMOSSize: getMOSSize, + createUI: createUI, + layoutUI: layoutUI, + getState: getState + }); + }; + + var createConnector = function(x1, y1, x2, y2) { + return createSVGElement('path'). + attr('d', 'M ' + x1 + ' ' + y1 + ' L ' + x2 + ' ' + y2). + attr('class', 'simcir-connector'); + }; + + var connect = function($node1, $node2) { + var type1 = $node1.attr('simcir-node-type'); + var type2 = $node2.attr('simcir-node-type'); + if (type1 == 'in' && type2 == 'out') { + controller($node2).connectTo(controller($node1) ); + } else if (type1 == 'out' && type2 == 'in') { + controller($node1).connectTo(controller($node2) ); + } + }; + + var buildCircuit = function(data, headless, scope) { + var $devices = []; + var $devMap = {}; + var getNode = function(path) { + if (!path.match(/^(\w+)\.(in|out)([0-9]+)$/g) ) { + throw 'unknown path:' + path; + } + var devId = RegExp.$1; + var type = RegExp.$2; + var index = +RegExp.$3; + return (type == 'in')? + controller($devMap[devId]).getInputs()[index] : + controller($devMap[devId]).getOutputs()[index]; + }; + $.each(data.devices, function(i, deviceDef) { + var $dev = createDevice(deviceDef, headless, scope); + transform($dev, deviceDef.x, deviceDef.y); + $devices.push($dev); + $devMap[deviceDef.id] = $dev; + }); + $.each(data.connectors, function(i, conn) { + var nodeFrom = getNode(conn.from); + var nodeTo = getNode(conn.to); + if (nodeFrom && nodeTo) { + connect(nodeFrom.$ui, nodeTo.$ui); + } + }); + return $devices; + }; + + var dialogManager = function() { + var dialogs = []; + var updateDialogs = function($dlg, remove) { + var newDialogs = []; + $.each(dialogs, function(i) { + if (dialogs[i] != $dlg) { + newDialogs.push(dialogs[i]); + } + }); + if (!remove) { + newDialogs.push($dlg); + } + // renumber z-index + $.each(newDialogs, function(i) { + newDialogs[i].css('z-index', '' + (i + 1) ); + }); + dialogs = newDialogs; + }; + return { + add : function($dlg) { + updateDialogs($dlg); + }, + remove : function($dlg) { + updateDialogs($dlg, true); + }, + toFront : function($dlg) { + updateDialogs($dlg); + } + }; + }(); + + var showDialog = function(title, $content) { + var $closeButton = function() { + var r = 16; + var pad = 4; + var $btn = createSVG(r, r). + attr('class', 'simcir-dialog-close-button'); + var g = graphics($btn); + g.drawRect(0, 0, r, r); + g.attr['class'] = 'simcir-dialog-close-button-symbol'; + g.moveTo(pad, pad); + g.lineTo(r - pad, r - pad); + g.closePath(); + g.moveTo(r - pad, pad); + g.lineTo(pad, r - pad); + g.closePath(); + return $btn; + }(); + var $title = $('
    '). + addClass('simcir-dialog-title'). + text(title). + css('cursor', 'default'). + on('mousedown', function(event) { + event.preventDefault(); + }); + var $dlg = $('
    '). + addClass('simcir-dialog'). + css({position:'absolute'}). + append($title.css('float', 'left') ). + append($closeButton.css('float', 'right') ). + append($('
    ').css('clear', 'both') ). + append($content); + $('BODY').append($dlg); + dialogManager.add($dlg); + var dragPoint = null; + var dlg_mouseDownHandler = function(event) { + if (!$(event.target).hasClass('simcir-dialog') && + !$(event.target).hasClass('simcir-dialog-title') ) { + return; + } + event.preventDefault(); + dialogManager.toFront($dlg); + var off = $dlg.offset(); + dragPoint = { + x: event.pageX - off.left, + y: event.pageY - off.top}; + $(document).on('mousemove', dlg_mouseMoveHandler); + $(document).on('mouseup', dlg_mouseUpHandler); + }; + var dlg_mouseMoveHandler = function(event) { + moveTo( + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + var dlg_mouseUpHandler = function(event) { + $(document).off('mousemove', dlg_mouseMoveHandler); + $(document).off('mouseup', dlg_mouseUpHandler); + }; + $dlg.on('mousedown', dlg_mouseDownHandler); + $closeButton.on('mousedown', function() { + $dlg.trigger('close'); + $dlg.remove(); + dialogManager.remove($dlg); + }); + var w = $dlg.width(); + var h = $dlg.height(); + var cw = $(window).width(); + var ch = $(window).height(); + var getProp = function(id) { + return $('HTML')[id]() || $('BODY')[id](); + }; + var x = (cw - w) / 2 + getProp('scrollLeft'); + var y = (ch - h) / 2 + getProp('scrollTop'); + var moveTo = function(x, y) { + $dlg.css({left: x + 'px', top: y + 'px'}); + }; + moveTo(x, y); + return $dlg; + }; + + var createDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + $ports.sort(function($p1, $p2) { + var x1 = controller($p1).deviceDef.x; + var y1 = controller($p1).deviceDef.y; + var x2 = controller($p2).deviceDef.x; + var y2 = controller($p2).deviceDef.y; + if (x1 == x2) { + return (y1 < y2)? -1 : 1; + } + return (x1 < x2)? -1 : 1; + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(portDef.label, + getDesc(outPort.getInputs()[0]) ); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(portDef.label, + getDesc(inPort.getOutput() ) ); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var super_getSize = device.getSize; + device.getSize = function() { + var size = super_getSize(); + return {width: unit * 4, height: size.height}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + }; + }; + + var createCustomLayoutDeviceRefFactory = function(data) { + return function(device) { + var $devs = buildCircuit(data, true, {}); + var $ports = []; + var intfs = []; + $.each($devs, function(i, $dev) { + var deviceDef = controller($dev).deviceDef; + if (deviceDef.type == 'In' || deviceDef.type == 'Out') { + $ports.push($dev); + } + }); + var getDesc = function(port) { + return port? port.description : ''; + }; + $.each($ports, function(i, $port) { + var port = controller($port); + var portDef = port.deviceDef; + var inPort; + var outPort; + if (portDef.type == 'In') { + outPort = port.getOutputs()[0]; + inPort = device.addInput(); + intfs.push({ node : inPort, label : portDef.label, + desc : getDesc(outPort.getInputs()[0]) }); + // force disconnect test devices that connected to In-port + var inNode = port.getInputs()[0]; + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } else if (portDef.type == 'Out') { + inPort = port.getInputs()[0]; + outPort = device.addOutput(); + intfs.push({ node : outPort, label : portDef.label, + desc : getDesc(inPort.getOutput() ) }); + // force disconnect test devices that connected to Out-port + var outNode = port.getOutputs()[0]; + $.each(outNode.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + } ); + } + inPort.$ui.on('nodeValueChange', function() { + outPort.setValue(inPort.getValue() ); + }); + }); + var layout = data.layout; + var cols = layout.cols; + var rows = layout.rows; + rows = ~~( (Math.max(1, rows) + 1) / 2) * 2; + cols = ~~( (Math.max(1, cols) + 1) / 2) * 2; + var updateIntf = function(intf, x, y, align) { + transform(intf.node.$ui, x, y); + if (!intf.$label) { + intf.$label = createLabel(intf.label). + attr('class', 'simcir-node-label'); + enableEvents(intf.$label, false); + intf.node.$ui.append(intf.$label); + } + if (align == 'right') { + intf.$label.attr('text-anchor', 'start'). + attr('x', 6). + attr('y', fontSize / 2); + } else if (align == 'left') { + intf.$label.attr('text-anchor', 'end'). + attr('x', -6). + attr('y', fontSize / 2); + } else if (align == 'top') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', -6); + } else if (align == 'bottom') { + intf.$label.attr('text-anchor', 'middle'). + attr('x', 0). + attr('y', fontSize + 6); + } + }; + var doLayout = function() { + var x = 0; + var y = 0; + var w = unit * cols / 2; + var h = unit * rows / 2; + device.$ui.children('.simcir-device-label'). + attr({y : y + h + fontSize}); + device.$ui.children('.simcir-device-body'). + attr({x: x, y: y, width: w, height: h}); + $.each(intfs, function(i, intf) { + if (layout.nodes[intf.label] && + layout.nodes[intf.label].match(/^([TBLR])([0-9]+)$/) ) { + var off = +RegExp.$2 * unit / 2; + switch(RegExp.$1) { + case 'T' : updateIntf(intf, x + off, y, 'bottom'); break; + case 'B' : updateIntf(intf, x + off, y + h, 'top'); break; + case 'L' : updateIntf(intf, x, y + off, 'right'); break; + case 'R' : updateIntf(intf, x + w, y + off, 'left'); break; + } + } else { + transform(intf.node.$ui, 0, 0); + } + }); + }; + device.getSize = function() { + return {width: unit * cols / 2, height: unit * rows / 2}; + }; + device.$ui.on('dispose', function() { + $.each($devs, function(i, $dev) { + $dev.trigger('dispose'); + }); + } ); + if (data.layout.hideLabelOnWorkspace) { + device.$ui.on('deviceAdd', function() { + device.$ui.children('.simcir-device-label').css('display', 'none'); + }).on('deviceRemove', function() { + device.$ui.children('.simcir-device-label').css('display', ''); + }); + } + device.$ui.on('dblclick', function(event) { + // open library, + event.preventDefault(); + event.stopPropagation(); + showDialog(device.deviceDef.label || device.deviceDef.type, + setupSimcir($('
    '), data) ).on('close', function() { + $(this).find('.simcir-workspace').trigger('dispose'); + }); + }); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + doLayout(); + }; + }; + }; + + var factories = {}; + var defaultToolbox = []; + var registerDevice = function(type, factory, deprecated) { + if (typeof factory == 'object') { + if (typeof factory.layout == 'object') { + factory = createCustomLayoutDeviceRefFactory(factory); + } else { + factory = createDeviceRefFactory(factory); + } + } + factories[type] = factory; + if (!deprecated) { + defaultToolbox.push({type: type}); + } + }; + + var createScrollbar = function() { + + // vertical only. + var _value = 0; + var _min = 0; + var _max = 0; + var _barSize = 0; + var _width = 0; + var _height = 0; + + var $body = createSVGElement('rect'); + var $bar = createSVGElement('g'). + append(createSVGElement('rect') ). + attr('class', 'simcir-scrollbar-bar'); + var $scrollbar = createSVGElement('g'). + attr('class', 'simcir-scrollbar'). + append($body).append($bar). + on('unitup', function(event) { + setValue(_value - unit * 2); + }).on('unitdown', function(event) { + setValue(_value + unit * 2); + }).on('rollup', function(event) { + setValue(_value - _barSize); + }).on('rolldown', function(event) { + setValue(_value + _barSize); + }); + + var dragPoint = null; + var bar_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var pos = transform($bar); + dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + $(document).on('mousemove', bar_mouseMoveHandler); + $(document).on('mouseup', bar_mouseUpHandler); + }; + var bar_mouseMoveHandler = function(event) { + calc(function(unitSize) { + setValue( (event.pageY - dragPoint.y) / unitSize); + }); + }; + var bar_mouseUpHandler = function(event) { + $(document).off('mousemove', bar_mouseMoveHandler); + $(document).off('mouseup', bar_mouseUpHandler); + }; + $bar.on('mousedown', bar_mouseDownHandler); + var body_mouseDownHandler = function(event) { + event.preventDefault(); + event.stopPropagation(); + var off = $scrollbar.parent('svg').offset(); + var pos = transform($scrollbar); + var y = event.pageY - off.top - pos.y; + var barPos = transform($bar); + if (y < barPos.y) { + $scrollbar.trigger('rollup'); + } else { + $scrollbar.trigger('rolldown'); + } + }; + $body.on('mousedown', body_mouseDownHandler); + + var setSize = function(width, height) { + _width = width; + _height = height; + layout(); + }; + var layout = function() { + + $body.attr({x: 0, y: 0, width: _width, height: _height}); + + var visible = _max - _min > _barSize; + $bar.css('display', visible? 'inline' : 'none'); + if (!visible) { + return; + } + calc(function(unitSize) { + $bar.children('rect'). + attr({x: 0, y: 0, width: _width, height: _barSize * unitSize}); + transform($bar, 0, _value * unitSize); + }); + }; + var calc = function(f) { + f(_height / (_max - _min) ); + }; + var setValue = function(value) { + setValues(value, _min, _max, _barSize); + }; + var setValues = function(value, min, max, barSize) { + value = Math.max(min, Math.min(value, max - barSize) ); + var changed = (value != _value); + _value = value; + _min = min; + _max = max; + _barSize = barSize; + layout(); + if (changed) { + $scrollbar.trigger('scrollValueChange'); + } + }; + var getValue = function() { + return _value; + }; + controller($scrollbar, { + setSize: setSize, + setValues: setValues, + getValue: getValue + }); + return $scrollbar; + }; + + var getUniqueId = function() { + var uniqueIdCount = 0; + return function() { + return 'simcir-id' + uniqueIdCount++; + }; + }(); + + var createWorkspace = function(data) { + + //console.log("In create workspace function"); + data = $.extend({ + width: 400, + height: 200, + showToolbox: true, + editable: true, + toolbox: defaultToolbox, + devices: [], + connectors: [], + }, data); + + var scope = {}; + + var workspaceWidth = data.width; + var workspaceHeight = data.height; + var barWidth = unit; + var toolboxWidth = data.showToolbox? unit * 6 + barWidth : 0; + + var connectorsValid = true; + var connectorsValidator = function() { + if (!connectorsValid) { + updateConnectors(); + connectorsValid = true; + } + }; + + var $workspace = createSVG( + workspaceWidth, workspaceHeight). + attr('class', 'simcir-workspace'). + on('nodeValueChange', function(event) { + connectorsValid = false; + window.setTimeout(connectorsValidator, 0); + }). + on('dispose', function() { + $(this).find('.simcir-device').trigger('dispose'); + $toolboxPane.remove(); + $workspace.remove(); + }); + + disableSelection($workspace); + + var $defs = createSVGElement('defs'); + $workspace.append($defs); + + !function() { + + // fill with pin hole pattern. + var patId = getUniqueId(); + var pitch = unit / 2; + var w = workspaceWidth - toolboxWidth; + var h = workspaceHeight; + + $defs.append(createSVGElement('pattern'). + attr({id: patId, x: 0, y: 0, + width: pitch / w, height: pitch / h}).append( + createSVGElement('rect').attr('class', 'simcir-pin-hole'). + attr({x: 0, y: 0, width: 1, height: 1}) ) ); + + $workspace.append(createSVGElement('rect'). + attr({x: toolboxWidth, y: 0, width: w, height: h}). + css({fill: 'url(#' + patId + ')'}) ); + }(); + + var $toolboxDevicePane = createSVGElement('g'); + var $scrollbar = createScrollbar(); + $scrollbar.on('scrollValueChange', function(event) { + transform($toolboxDevicePane, 0, + -controller($scrollbar).getValue() ); + }); + controller($scrollbar).setSize(barWidth, workspaceHeight); + transform($scrollbar, toolboxWidth - barWidth, 0); + var $toolboxPane = createSVGElement('g'). + attr('class', 'simcir-toolbox'). + append(createSVGElement('rect'). + attr({x: 0, y: 0, + width: toolboxWidth, + height: workspaceHeight}) ). + append($toolboxDevicePane). + append($scrollbar).on('wheel', function(event) { + event.preventDefault(); + var oe = event.originalEvent || event; + if (oe.deltaY < 0) { + $scrollbar.trigger('unitup'); + } else if (oe.deltaY > 0) { + $scrollbar.trigger('unitdown'); + } + }); + + var $devicePane = createSVGElement('g'); + transform($devicePane, toolboxWidth, 0); + var $connectorPane = createSVGElement('g'); + var $temporaryPane = createSVGElement('g'); + + enableEvents($connectorPane, false); + enableEvents($temporaryPane, false); + + if (data.showToolbox) { + $workspace.append($toolboxPane); + } + $workspace.append($devicePane); + $workspace.append($connectorPane); + $workspace.append($temporaryPane); + + var addDevice = function($dev) { + $devicePane.append($dev); + $dev.trigger('deviceAdd'); + }; + + var removeDevice = function($dev) { + $dev.trigger('deviceRemove'); + // before remove, disconnect all + controller($dev).disconnectAll(); + $dev.trigger('dispose'); + updateConnectors(); + }; + + var disconnect = function($inNode) { + var inNode = controller($inNode); + if (inNode.getOutput() != null) { + inNode.getOutput().disconnectFrom(inNode); + } + updateConnectors(); + }; + + var updateConnectors = function() { + $connectorPane.children().remove(); + $devicePane.children('.simcir-device').each(function() { + var device = controller($(this) ); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + var p1 = offset(inNode.$ui); + var p2 = offset(inNode.getOutput().$ui); + var $conn = createConnector(p1.x, p1.y, p2.x, p2.y); + if (inNode.getOutput().getValue() != null) { + $conn.addClass('simcir-connector-hot'); + } + $connectorPane.append($conn); + } + }); + }); + }; + + var loadToolbox = function(data) { + var vgap = 8; + var y = vgap; + $.each(data.toolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + $toolboxDevicePane.append($dev); + var size = controller($dev).getSize(); + transform($dev, (toolboxWidth - barWidth - size.width) / 2, y); + y += (size.height + fontSize + vgap); + }); + controller($scrollbar).setValues(0, 0, y, workspaceHeight); + }; + + var getData = function() { + //console.log("in getData function"); + // renumber all id + var devIdCount = 0; + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + var devId = 'dev' + devIdCount++; + device.id = devId; + $.each(device.getInputs(), function(i, node) { + node.id = devId + '.in' + i; + }); + $.each(device.getOutputs(), function(i, node) { + node.id = devId + '.out' + i; + }); + }); + + var toolbox = []; + var devices = []; + var connectors = []; + var clone = function(obj) { + return JSON.parse(JSON.stringify(obj) ); + }; + $toolboxDevicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + toolbox.push(device.deviceDef); + }); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var device = controller($dev); + $.each(device.getInputs(), function(i, inNode) { + if (inNode.getOutput() != null) { + connectors.push({from:inNode.id, to:inNode.getOutput().id}); + } + }); + var pos = transform($dev); + var deviceDef = clone(device.deviceDef); + deviceDef.id = device.id; + deviceDef.x = pos.x; + deviceDef.y = pos.y; + deviceDef.label = device.getLabel(); + var state = device.getState(); + if (state != null) { + deviceDef.state = state; + } + devices.push(deviceDef); + }); + return { + width: data.width, + height: data.height, + showToolbox: data.showToolbox, + editable: data.editable, + toolbox: toolbox, + devices: devices, + connectors: connectors + }; + }; + var getText = function() { + //console.log("In getText function"); + + /*global dataFinal*/ + dataFinal = getData(); + var data = getData(); + + var buf = ''; + var print = function(s) { + buf += s; + }; + var println = function(s) { + print(s); + buf += '\r\n'; + }; + var printArray = function(array) { + $.each(array, function(i, item) { + println(' ' + JSON.stringify(item). + replace(//g, '\\u003e') + + (i + 1 < array.length? ',' : '') ); + }); + }; + println('{'); + println(' "width":' + data.width + ','); + println(' "height":' + data.height + ','); + println(' "showToolbox":' + data.showToolbox + ','); + println(' "toolbox":['); + printArray(data.toolbox); + println(' ],'); + println(' "devices":['); + printArray(data.devices); + println(' ],'); + println(' "connectors":['); + printArray(data.connectors); + println(' ]'); + print('}'); + return buf; + }; + + //------------------------------------------- + // mouse operations + + var dragMoveHandler = null; + var dragCompleteHandler = null; + + var adjustDevice = function($dev) { + //console.log("In adjust"); + var pitch = unit / 2; + var adjust = function(v) { return Math.round(v / pitch) * pitch; }; + var pos = transform($dev); + var size = controller($dev).getSize(); + var x = Math.max(0, Math.min(pos.x, + workspaceWidth - toolboxWidth - size.width) ); + var y = Math.max(0, Math.min(pos.y, + workspaceHeight - size.height) ); + transform($dev, adjust(x), adjust(y) ); + //deselectAll(); + getText(); + }; + + var beginConnect = function(event, $target) { + var $srcNode = $target.closest('.simcir-node'); + var off = $workspace.offset(); + var pos = offset($srcNode); + if ($srcNode.attr('simcir-node-type') == 'in') { + disconnect($srcNode); + } + dragMoveHandler = function(event) { + var x = event.pageX - off.left; + var y = event.pageY - off.top; + $temporaryPane.children().remove(); + $temporaryPane.append(createConnector(pos.x, pos.y, x, y) ); + }; + dragCompleteHandler = function(event) { + //console.log("drag connection complete"); + $temporaryPane.children().remove(); + var $dst = $(event.target); + if (isActiveNode($dst) ) { + var $dstNode = $dst.closest('.simcir-node'); + connect($srcNode, $dstNode); + updateConnectors(); + } + getText(); + }; + }; + + var beginNewDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = offset($dev); + $dev = createDevice(controller($dev).deviceDef, false, scope); + transform($dev, pos.x, pos.y); + $temporaryPane.append($dev); + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + transform($dev, + event.pageX - dragPoint.x, + event.pageY - dragPoint.y); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete newdev"); + var $target = $(event.target); + if ($target.closest('.simcir-toolbox').length == 0) { + $dev.detach(); + var pos = transform($dev); + transform($dev, pos.x - toolboxWidth, pos.y); + adjustDevice($dev); + addDevice($dev); + } else { + $dev.trigger('dispose'); + } + getText(); + }; + }; + + var $selectedDevices = []; + var addSelected = function($dev) { + //console.log("selected"); + controller($dev).setSelected(true); + $selectedDevices.push($dev); + }; + var deselectAll = function() { + //console.log("deselectAll"); + $devicePane.children('.simcir-device').each(function() { + controller($(this) ).setSelected(false); + }); + $selectedDevices = []; + }; + + var beginMoveDevice = function(event, $target) { + var $dev = $target.closest('.simcir-device'); + var pos = transform($dev); + if (!controller($dev).isSelected() ) { + deselectAll(); + addSelected($dev); + // to front. + $dev.parent().append($dev.detach() ); + } + + var dragPoint = { + x: event.pageX - pos.x, + y: event.pageY - pos.y}; + dragMoveHandler = function(event) { + // disable events while dragging. + enableEvents($dev, false); + var curPos = transform($dev); + var deltaPos = { + x: event.pageX - dragPoint.x - curPos.x, + y: event.pageY - dragPoint.y - curPos.y}; + $.each($selectedDevices, function(i, $dev) { + var curPos = transform($dev); + transform($dev, + curPos.x + deltaPos.x, + curPos.y + deltaPos.y); + }); + updateConnectors(); + }; + dragCompleteHandler = function(event) { + //console.log("drag complete dev"); + var $target = $(event.target); + enableEvents($dev, true); + $.each($selectedDevices, function(i, $dev) { + if ($target.closest('.simcir-toolbox').length == 0) { + adjustDevice($dev); + updateConnectors(); + } else { + removeDevice($dev); + } + }); + getText(); + }; + }; + + var beginSelectDevice = function(event, $target) { + var intersect = function(rect1, rect2) { + return !( + rect1.x > rect2.x + rect2.width || + rect1.y > rect2.y + rect2.height || + rect1.x + rect1.width < rect2.x || + rect1.y + rect1.height < rect2.y); + }; + var pointToRect = function(p1, p2) { + return { + x: Math.min(p1.x, p2.x), + y: Math.min(p1.y, p2.y), + width: Math.abs(p1.x - p2.x), + height: Math.abs(p1.y - p2.y)}; + }; + deselectAll(); + var off = $workspace.offset(); + var pos = offset($devicePane); + var p1 = {x: event.pageX - off.left, y: event.pageY - off.top}; + dragMoveHandler = function(event) { + deselectAll(); + var p2 = {x: event.pageX - off.left, y: event.pageY - off.top}; + var selRect = pointToRect(p1, p2); + $devicePane.children('.simcir-device').each(function() { + var $dev = $(this); + var devPos = transform($dev); + var devSize = controller($dev).getSize(); + var devRect = { + x: devPos.x + pos.x, + y: devPos.y + pos.y, + width: devSize.width, + height: devSize.height}; + if (intersect(selRect, devRect) ) { + addSelected($dev); + } + }); + $temporaryPane.children().remove(); + $temporaryPane.append(createSVGElement('rect'). + attr(selRect). + attr('class', 'simcir-selection-rect') ); + }; + }; + + var mouseDownHandler = function(event) { + //console.log("Mouse down"); + event.preventDefault(); + event.stopPropagation(); + var $target = $(event.target); + if (!data.editable) { + return; + } + if (isActiveNode($target) ) { + beginConnect(event, $target); + } else if ($target.closest('.simcir-device').length == 1) { + if ($target.closest('.simcir-toolbox').length == 1) { + beginNewDevice(event, $target); + } else { + beginMoveDevice(event, $target); + } + } else { + beginSelectDevice(event, $target); + } + $(document).on('mousemove', mouseMoveHandler); + $(document).on('mouseup', mouseUpHandler); + }; + var mouseMoveHandler = function(event) { + if (dragMoveHandler != null) { + dragMoveHandler(event); + } + }; + var mouseUpHandler = function(event) { + //console.log("Mouse up"); + if (dragCompleteHandler != null) { + dragCompleteHandler(event); + } + dragMoveHandler = null; + dragCompleteHandler = null; + $devicePane.children('.simcir-device').each(function() { + enableEvents($(this), true); + }); + $temporaryPane.children().remove(); + $(document).off('mousemove', mouseMoveHandler); + $(document).off('mouseup', mouseUpHandler); + getText(); + }; + $workspace.on('mousedown', mouseDownHandler); + + //------------------------------------------- + // + + loadToolbox(data); + $.each(buildCircuit(data, false, scope), function(i, $dev) { + addDevice($dev); + }); + updateConnectors(); + controller($workspace, { + data: getData, + text: getText + }); + getText(); + return $workspace; + }; + + var clearSimcir = function($placeHolder) { + $placeHolder = $($placeHolder[0]); + $placeHolder.find('.simcir-workspace').trigger('dispose'); + $placeHolder.children().remove(); + return $placeHolder; + }; + + var setupSimcir = function($placeHolder, data) { + + $placeHolder = clearSimcir($placeHolder); + + var $workspace = simcir.createWorkspace(data); + var $dataArea = $(''). + addClass('simcir-json-data-area'). + attr('readonly', 'readonly'). + css('width', $workspace.attr('width') + 'px'). + css('height', $workspace.attr('height') + 'px'); + var showData = false; + var toggle = function() + { + $workspace.css('display', !showData? 'inline' : 'none'); + $dataArea.css('display', showData? 'inline' : 'none'); + if (showData) { + $dataArea.val(controller($workspace).text() ).focus(); + } + showData = !showData; + }; + $placeHolder.text(''); + $placeHolder.append($('
    '). + addClass('simcir-body'). + append($workspace). + append($dataArea). + on('click', function(event) { + if (event.ctrlKey || event.metaKey) { + toggle(); + } + })); + toggle(); + return $placeHolder; + }; + + var setupSimcirDoc = function($placeHolder) { + var $table = $('
    '). + addClass('simcir-doc-table'); + $.each(defaultToolbox, function(i, deviceDef) { + var $dev = createDevice(deviceDef); + var device = controller($dev); + if (!device.doc) { + return; + } + var doc = $.extend({description: '', params: []},device.doc); + var size = device.getSize(); + + var $tr = $(''); + var hgap = 32; + var vgap = 8; + var $view = createSVG(size.width + hgap * 2, + size.height + vgap * 2 + fontSize); + var $dev = createDevice(deviceDef); + transform($dev, hgap, vgap); + + $view.append($dev); + $tr.append($('').css('text-align', 'center').append($view) ); + var $desc = $(''); + $tr.append($desc); + + if (doc.description) { + $desc.append($(''). + text(doc.description) ); + } + + $desc.append($('
    Params
    ').addClass('simcir-doc-title') ); + var $paramsTable = $('
    '). + addClass('simcir-doc-params-table'); + $paramsTable.children('tbody').append($(''). + append($('Name') ). + append($('Type') ). + append($('Default') ). + append($('Description') ) ); + $paramsTable.children('tbody').append($(''). + append($('type') ). + append($('string') ). + append($('-'). + css('text-align', 'center') ). + append($('"' + deviceDef.type + '"') ) ); + if (!doc.labelless) { + $paramsTable.children('tbody').append($(''). + append($('label') ). + append($('string') ). + append($('same with type').css('text-align', 'center') ). + append($('label for a device.') ) ); + } + if (doc.params) { + $.each(doc.params, function(i, param) { + $paramsTable.children('tbody').append($(''). + append($('').text(param.name) ). + append($('').text(param.type) ). + append($('').css('text-align', 'center'). + text(param.defaultValue) ). + append($('').text(param.description) ) ); + }); + } + $desc.append($paramsTable); + + if (doc.code) { + $desc.append($('
    Code
    ').addClass('simcir-doc-title') ); + $desc.append($('
    '). + addClass('simcir-doc-code').text(doc.code) ); + } + + $table.children('tbody').append($tr); + }); + + $placeHolder.append($table); + }; + + $(function() { + $('.simcir').each(function() { + var $placeHolder = $(this); + var text = $placeHolder.text().replace(/^\s+|\s+$/g, ''); + setupSimcir($placeHolder, JSON.parse(text || '{}') ); + }); + }); + + $(function() { + $('.simcir-doc').each(function() { + setupSimcirDoc($(this) ); + }); + }); + + $.extend($s, { + registerDevice: registerDevice, + clearSimcir: clearSimcir, + setupSimcir: setupSimcir, + createWorkspace: createWorkspace, + createSVGElement: createSVGElement, + offset: offset, + transform: transform, + enableEvents: enableEvents, + graphics: graphics, + controller: controller, + unit: unit + }); +}(simcir); + +// +// built-in devices +// +!function($s) { + + 'use strict'; + + var $ = $s.$; + + // unit size + var unit = $s.unit; + + var connectNode = function(in1, out1) { + // set input value to output without inputValueChange event. + var in1_super_setValue = in1.setValue; + in1.setValue = function(value, force) { + var changed = in1.getValue() !== value; + in1_super_setValue(value, force); + if (changed || force) { + out1.setValue(in1.getValue() ); + } + }; + }; + + var createPortFactory = function(type) { + return function(device) { + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + var size = device.getSize(); + var cx = size.width / 2; + var cy = size.height / 2; + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 2}). + attr('class', 'simcir-port simcir-node-type-' + type) ); + device.$ui.append($s.createSVGElement('circle'). + attr({cx: cx, cy: cy, r: unit / 4}). + attr('class', 'simcir-port-hole') ); + }; + }; + }; + + var createJointFactory = function() { + + var maxFadeCount = 16; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var in1 = device.addInput(); + var out1 = device.addOutput(); + connectNode(in1, out1); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(in1.$ui, x0, y0); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + $path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + var createOJointFactory = function() { + + var maxFadeCount = 50; + var fadeTimeout = 100; + + var Direction = { WE : 0, NS : 1, EW : 2, SN : 3 }; + + return function(device) { + + var out1 = device.addOutput(); + + var state = device.deviceDef.state || { direction : Direction.WE }; + device.getState = function() { + return state; + }; + + device.getSize = function() { + return { width : unit, height : unit }; + }; + + var super_createUI = device.createUI; + device.createUI = function() { + super_createUI(); + + var $label = device.$ui.children('.simcir-device-label'); + $label.attr('y', $label.attr('y') - unit / 4); + + var $point = $s.createSVGElement('circle'). + css('pointer-events', 'none').css('opacity', 0).attr('r', 2). + addClass('simcir-connector').addClass('simcir-joint-point'); + device.$ui.append($point); + + var $path = $s.createSVGElement('path'). + css('pointer-events', 'none').css('opacity', 0). + addClass('simcir-connector'); + device.$ui.append($path); + + var $title = $s.createSVGElement('title'). + text('Double-Click to change a direction.'); + + var updatePoint = function() { + $point.css('display', out1.getInputs().length > 1? '' : 'none'); + }; + + updatePoint(); + + var super_connectTo = out1.connectTo; + out1.connectTo = function(inNode) { + super_connectTo(inNode); + updatePoint(); + }; + var super_disconnectFrom = out1.disconnectFrom; + out1.disconnectFrom = function(inNode) { + super_disconnectFrom(inNode); + updatePoint(); + }; + + var updateUI = function() { + var x0, y0, x1, y1; + x0 = y0 = x1 = y1 = unit / 2; + var d = unit / 2; + var direction = state.direction; + if (direction == Direction.WE) { + x0 -= d; + x1 += d; + } else if (direction == Direction.NS) { + y0 -= d; + y1 += d; + } else if (direction == Direction.EW) { + x0 += d; + x1 -= d; + } else if (direction == Direction.SN) { + y0 += d; + y1 -= d; + } + $path.attr('d', 'M' + x0 + ' ' + y0 + 'L' + x1 + ' ' + y1); + $s.transform(out1.$ui, x1, y1); + $point.attr({cx : x1, cy : y1}); + if (direction == Direction.EW || direction == Direction.WE) { + device.$ui.children('.simcir-device-body'). + attr({x: 0, y: unit / 4, width: unit, height: unit / 2}); + } else { + device.$ui.children('.simcir-device-body'). + attr({x: unit / 4, y: 0, width: unit / 2, height: unit}); + } + }; + + updateUI(); + + // fadeout a body. + var fadeCount = 0; + var setOpacity = function(opacity) { + device.$ui.children('.simcir-device-body,.simcir-node'). + css('opacity', opacity); + //$path.css('opacity', 1 - opacity); + $point.css('opacity', 1 - opacity); + }; + var fadeout = function() { + window.setTimeout(function() { + if (fadeCount > 0) { + fadeCount -= 1; + setOpacity(fadeCount / maxFadeCount); + fadeout(); + } + }, fadeTimeout); + }; + + var isEditable = function($dev) { + var $workspace = $dev.closest('.simcir-workspace'); + return !!$s.controller($workspace).data().editable; + }; + var device_mouseoutHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + if (!device.isSelected() ) { + fadeCount = maxFadeCount; + fadeout(); + } + }; + var device_dblclickHandler = function(event) { + if (!isEditable($(event.target) ) ) { + return; + } + state.direction = (state.direction + 1) % 4; + updateUI(); + // update connectors. + $(this).trigger('mousedown').trigger('mouseup'); + }; + + device.$ui.on('mouseover', function(event) { + if (!isEditable($(event.target) ) ) { + $title.text(''); + return; + } + setOpacity(1); + fadeCount = 0; + }).on('deviceAdd', function() { + if ($(this).closest('BODY').length == 0) { + setOpacity(0); + } + $(this).append($title).on('mouseout', device_mouseoutHandler). + on('dblclick', device_dblclickHandler); + // hide a label + $label.css('display', 'none'); + }).on('deviceRemove', function() { + $(this).off('mouseout', device_mouseoutHandler). + off('dblclick', device_dblclickHandler); + $title.remove(); + // show a label + $label.css('display', ''); + }).on('deviceSelect', function() { + if (device.isSelected() ) { + setOpacity(1); + fadeCount = 0; + } else { + if (fadeCount == 0) { + setOpacity(0); + } + } + }); + }; + }; + }; + + // register built-in devices + $s.registerDevice('In', createPortFactory('in') ); + $s.registerDevice('Out', createPortFactory('out') ); + $s.registerDevice('Joint', createJointFactory() ); + $s.registerDevice('OJoint', createOJointFactory() ); + +}(simcir); diff --git a/scripts/backup b/scripts/backup old mode 100755 new mode 100644 diff --git a/scripts/restore b/scripts/restore old mode 100755 new mode 100644 diff --git a/scripts/startup b/scripts/startup old mode 100755 new mode 100644 diff --git a/scripts/stop b/scripts/stop old mode 100755 new mode 100644 diff --git a/scripts/test b/scripts/test old mode 100755 new mode 100644 diff --git a/scripts/test-to-deploy.sh b/scripts/test-to-deploy.sh old mode 100755 new mode 100644 diff --git a/scripts/transfer.sh b/scripts/transfer.sh old mode 100755 new mode 100644 diff --git a/src/database/database_temp.sql b/src/database/database_temp.sql old mode 100755 new mode 100644 diff --git a/src/database/mysql.sql b/src/database/mysql.sql old mode 100755 new mode 100644 diff --git a/src/help/help.html b/src/help/help.html old mode 100755 new mode 100644 diff --git a/src/help/images/Sitemap.png b/src/help/images/Sitemap.png old mode 100755 new mode 100644 diff --git a/src/help/images/newsitemap.png b/src/help/images/newsitemap.png old mode 100755 new mode 100644 diff --git a/src/help/images/sections.png b/src/help/images/sections.png old mode 100755 new mode 100644 diff --git a/src/help/index.html b/src/help/index.html old mode 100755 new mode 100644 diff --git a/src/lab/Introduction.html b/src/lab/Introduction.html index f7fc28fc..379edfd3 100644 --- a/src/lab/Introduction.html +++ b/src/lab/Introduction.html @@ -8,27 +8,27 @@ - + Welcome to Virtual Labs - A MHRD Govt of india Initiative - + - - + + - + - + - - + + - - -

    Welcome to jQuery UI!

    -

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    -

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    - -

    YOUR COMPONENTS:

    - - -

    Accordion

    -
    -
    -

    First

    -
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    -
    -
    -

    Second

    -
    Phasellus mattis tincidunt nibh.
    -
    -
    -

    Third

    -
    Nam dui erat, auctor a, dignissim quis.
    -
    -
    - - -

    Tabs

    -
    - -
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    -
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    -
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    -
    - - -

    Dialog

    -

    Open Dialog

    - - -

    Overlay and Shadow Classes (not currently used in UI widgets)

    -
    -

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    - - -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    -
    - -
    - - - -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    - - - -

    Framework Icons (content color preview)

    -
      - -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    - - - -

    Slider

    -
    - - -

    Datepicker

    -
    - - -

    Progressbar

    -
    - - -

    Highlight / Error

    -
    -
    -

    - Hey! Sample ui-state-highlight style.

    -
    -
    -
    -
    -
    -

    - Alert: Sample ui-state-error style.

    -
    -
    - - - - - + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/demos.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010/exp4/junk/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/preQuiz4.php b/src/lab/final-build/EXP_1sep2010/exp4/preQuiz4.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/version1_13Nov2010_exp4.php b/src/lab/final-build/EXP_1sep2010/exp4/version1_13Nov2010_exp4.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/version1_13Nov2010_exp4_graph.php b/src/lab/final-build/EXP_1sep2010/exp4/version1_13Nov2010_exp4_graph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp4/version1_exp4_out.java b/src/lab/final-build/EXP_1sep2010/exp4/version1_exp4_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp5/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/exp5/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Feedback.html b/src/lab/final-build/EXP_1sep2010/exp5/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Introduction.html b/src/lab/final-build/EXP_1sep2010/exp5/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Manual.html b/src/lab/final-build/EXP_1sep2010/exp5/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Objective.html b/src/lab/final-build/EXP_1sep2010/exp5/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Procedure.html b/src/lab/final-build/EXP_1sep2010/exp5/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Quiz.html b/src/lab/final-build/EXP_1sep2010/exp5/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/References.html b/src/lab/final-build/EXP_1sep2010/exp5/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Simulator.html b/src/lab/final-build/EXP_1sep2010/exp5/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/Theory.html b/src/lab/final-build/EXP_1sep2010/exp5/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/bsim4.out b/src/lab/final-build/EXP_1sep2010/exp5/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010/exp5/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010/exp5/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$1.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Multiplexer_simulate.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Multiplexer_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$1.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/bsim4.out b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$1.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.html b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative_simulate.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/exp5_Pass_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_simulate.php b/src/lab/final-build/EXP_1sep2010/exp5/exp5_Pass_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$1.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.class b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.html b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.java b/src/lab/final-build/EXP_1sep2010/exp5/exp5_mux.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/exp5_pass.html b/src/lab/final-build/EXP_1sep2010/exp5/exp5_pass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp5/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp5/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp5/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/pass.sp b/src/lab/final-build/EXP_1sep2010/exp5/pass.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp5/preQuiz5.php b/src/lab/final-build/EXP_1sep2010/exp5/preQuiz5.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp6/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/exp6/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Feedback.html b/src/lab/final-build/EXP_1sep2010/exp6/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Introduction.html b/src/lab/final-build/EXP_1sep2010/exp6/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Manual.html b/src/lab/final-build/EXP_1sep2010/exp6/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Objective.html b/src/lab/final-build/EXP_1sep2010/exp6/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Procedure.html b/src/lab/final-build/EXP_1sep2010/exp6/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Quiz.html b/src/lab/final-build/EXP_1sep2010/exp6/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/References.html b/src/lab/final-build/EXP_1sep2010/exp6/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Simulator.html b/src/lab/final-build/EXP_1sep2010/exp6/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/Theory.html b/src/lab/final-build/EXP_1sep2010/exp6/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/a b/src/lab/final-build/EXP_1sep2010/exp6/a old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/bsim4.out b/src/lab/final-build/EXP_1sep2010/exp6/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/dlatch_negitive.sp b/src/lab/final-build/EXP_1sep2010/exp6/dlatch_negitive.sp old mode 100755 new mode 100644 index 45b242b5..22d90512 --- a/src/lab/final-build/EXP_1sep2010/exp6/dlatch_negitive.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/dlatch_negitive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(q1) V(In1) V(clk) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(q1) V(In1) V(clk) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/dlatch_positive.sp b/src/lab/final-build/EXP_1sep2010/exp6/dlatch_positive.sp old mode 100755 new mode 100644 index 5baba96b..25b4aad4 --- a/src/lab/final-build/EXP_1sep2010/exp6/dlatch_positive.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/dlatch_positive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk out Vdd PMOS l=50n w=450n -M2 In1 clk1 out 0 NMOS l=50n w=100n -M3 In2 clk1 out Vdd PMOS l=50n w=450n -M4 In2 clk out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(out) V(In1) V(clk) V(q1) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk out Vdd PMOS l=50n w=450n +M2 In1 clk1 out 0 NMOS l=50n w=100n +M3 In2 clk1 out Vdd PMOS l=50n w=450n +M4 In2 clk out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(out) V(In1) V(clk) V(q1) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010/exp6/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010/exp6/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp6/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp6/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$1.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.html b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive_simulate.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_flipflop_positive_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$1.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.html b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive_simulate.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_latch_positive_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/NegativeEdgeD_FF.sp b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/NegativeEdgeD_FF.sp old mode 100755 new mode 100644 index 0250eca0..055fe13f --- a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/NegativeEdgeD_FF.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/NegativeEdgeD_FF.sp @@ -1,38 +1,38 @@ -*NegativeEdgeD flip flop -.include '45nm_HP.pm' -.option post=2 -M1 D clk1 out Vdd PMOS l=50n w=450n -M2 D clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q out Vdd Vdd PMOS l=50n w= 450n -M6 q out 0 0 NMOS l=50n w=100n -cl q 0 100f -M7 In2 q Vdd Vdd PMOS l=50n w= 450n -M8 In2 q 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q clk out1 Vdd PMOS l=50n w= 450n -M10 q clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q1 out1 Vdd Vdd PMOS l=50n w= 450n -M14 q1 out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q1 Vdd Vdd PMOS l=50n w= 450n -M16 In3 q1 0 0 NMOS l=50n w=100n -c4 In3 0 100f - -VClk clk 0 PULSE(0 1.1 0 100p 100p 1550n 3000n) -VClk1 clk1 0 PULSE(1.1 0 0 100p 100p 1550n 3000n) -VIn1 D 0 PULSE(0 1.1 0 100p 100p 95n 200n) -.tran 10ns 20000n -*.print tran V(out) V(q) V(clk) V(clk1) V(D) -.save V(q) V(clk) V(D) -.end - -*VIn1 In1 0 pulse (0 1.1 0 1n 1n 16n 30n ) -*Vclk clk 0 pulse (0 1.1 0 1n 1n 4n 8n ) -*Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 4n 8n ) -*.tran 1n 100n +*NegativeEdgeD flip flop +.include '45nm_HP.pm' +.option post=2 +M1 D clk1 out Vdd PMOS l=50n w=450n +M2 D clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q out Vdd Vdd PMOS l=50n w= 450n +M6 q out 0 0 NMOS l=50n w=100n +cl q 0 100f +M7 In2 q Vdd Vdd PMOS l=50n w= 450n +M8 In2 q 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q clk out1 Vdd PMOS l=50n w= 450n +M10 q clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q1 out1 Vdd Vdd PMOS l=50n w= 450n +M14 q1 out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q1 Vdd Vdd PMOS l=50n w= 450n +M16 In3 q1 0 0 NMOS l=50n w=100n +c4 In3 0 100f + +VClk clk 0 PULSE(0 1.1 0 100p 100p 1550n 3000n) +VClk1 clk1 0 PULSE(1.1 0 0 100p 100p 1550n 3000n) +VIn1 D 0 PULSE(0 1.1 0 100p 100p 95n 200n) +.tran 10ns 20000n +*.print tran V(out) V(q) V(clk) V(clk1) V(D) +.save V(q) V(clk) V(D) +.end + +*VIn1 In1 0 pulse (0 1.1 0 1n 1n 16n 30n ) +*Vclk clk 0 pulse (0 1.1 0 1n 1n 4n 8n ) +*Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 4n 8n ) +*.tran 1n 100n diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/bsim4.out b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/dlatch_negitive.sp b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/dlatch_negitive.sp old mode 100755 new mode 100644 index 45b242b5..22d90512 --- a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/dlatch_negitive.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/dlatch_negitive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(q1) V(In1) V(clk) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(q1) V(In1) V(clk) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$1.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.html b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative_simulate.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_flipflop_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$1.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.class b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.html b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.java b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative_simulate.php b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/exp6_latch_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/flipflop_negative.sp b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/flipflop_negative.sp old mode 100755 new mode 100644 index 8f5bd92b..9599b0c2 --- a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/flipflop_negative.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/flipflop_negative.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk out1 Vdd PMOS l=50n w= 450n -M10 q1 clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk out1 Vdd PMOS l=50n w= 450n +M10 q1 clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/graph.gif b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/simulate.png b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/test.sp b/src/lab/final-build/EXP_1sep2010/exp6/exp6_negative/test.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/flipflop_negative.sp b/src/lab/final-build/EXP_1sep2010/exp6/flipflop_negative.sp old mode 100755 new mode 100644 index 8f5bd92b..9599b0c2 --- a/src/lab/final-build/EXP_1sep2010/exp6/flipflop_negative.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/flipflop_negative.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk out1 Vdd PMOS l=50n w= 450n -M10 q1 clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk out1 Vdd PMOS l=50n w= 450n +M10 q1 clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/flipflop_positive.sp b/src/lab/final-build/EXP_1sep2010/exp6/flipflop_positive.sp old mode 100755 new mode 100644 index 8d0cdf73..f22870f3 --- a/src/lab/final-build/EXP_1sep2010/exp6/flipflop_positive.sp +++ b/src/lab/final-build/EXP_1sep2010/exp6/flipflop_positive.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk out Vdd PMOS l=50n w=450n -M2 In1 clk1 out 0 NMOS l=50n w=100n -M3 In2 clk1 out Vdd PMOS l=50n w=450n -M4 In2 clk out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk1 out1 Vdd PMOS l=50n w= 450n -M10 q1 clk out1 0 NMOS l=50n w=100n -M11 In3 clk out1 Vdd PMOS l=50n w= 450n -M12 In3 clk1 out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk out Vdd PMOS l=50n w=450n +M2 In1 clk1 out 0 NMOS l=50n w=100n +M3 In2 clk1 out Vdd PMOS l=50n w=450n +M4 In2 clk out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk1 out1 Vdd PMOS l=50n w= 450n +M10 q1 clk out1 0 NMOS l=50n w=100n +M11 In3 clk out1 Vdd PMOS l=50n w= 450n +M12 In3 clk1 out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp6/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp6/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp6/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/graph.gif b/src/lab/final-build/EXP_1sep2010/exp6/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/simulate.png b/src/lab/final-build/EXP_1sep2010/exp6/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp6/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp6/preQuiz6.php b/src/lab/final-build/EXP_1sep2010/exp6/preQuiz6.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp7/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/exp7/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Feedback.html b/src/lab/final-build/EXP_1sep2010/exp7/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Introduction.html b/src/lab/final-build/EXP_1sep2010/exp7/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Manual.html b/src/lab/final-build/EXP_1sep2010/exp7/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Objective.html b/src/lab/final-build/EXP_1sep2010/exp7/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Procedure.html b/src/lab/final-build/EXP_1sep2010/exp7/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Quiz.html b/src/lab/final-build/EXP_1sep2010/exp7/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/References.html b/src/lab/final-build/EXP_1sep2010/exp7/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Simulator.html b/src/lab/final-build/EXP_1sep2010/exp7/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/Theory.html b/src/lab/final-build/EXP_1sep2010/exp7/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/bsim4.out b/src/lab/final-build/EXP_1sep2010/exp7/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010/exp7/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010/exp7/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp7/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010/exp7/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$1.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.class b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.html b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.java b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/exp7_size_simulate.php b/src/lab/final-build/EXP_1sep2010/exp7/exp7_size_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp7/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp7/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp7/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp7/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Feedback.html b/src/lab/final-build/EXP_1sep2010/exp8/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Introduction.html b/src/lab/final-build/EXP_1sep2010/exp8/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Manual.html b/src/lab/final-build/EXP_1sep2010/exp8/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Objective.html b/src/lab/final-build/EXP_1sep2010/exp8/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Procedure.html b/src/lab/final-build/EXP_1sep2010/exp8/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Quiz.html b/src/lab/final-build/EXP_1sep2010/exp8/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/References.html b/src/lab/final-build/EXP_1sep2010/exp8/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Simulator.html b/src/lab/final-build/EXP_1sep2010/exp8/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/Theory.html b/src/lab/final-build/EXP_1sep2010/exp8/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/a.out b/src/lab/final-build/EXP_1sep2010/exp8/a.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/comb.v b/src/lab/final-build/EXP_1sep2010/exp8/comb.v old mode 100755 new mode 100644 index b90dc6dc..d6f00222 --- a/src/lab/final-build/EXP_1sep2010/exp8/comb.v +++ b/src/lab/final-build/EXP_1sep2010/exp8/comb.v @@ -1,12 +1,12 @@ -// Synthesizable circuit (the "device-under-test") - -module CombinationalCircuit (a,b,c,d,y); - input a,b,c,d; - output y; - - reg y; - - always @ (a or b or c or d) - y <= (a==0) ? (a & b & c) : (a ^ b ^ c); - -endmodule +// Synthesizable circuit (the "device-under-test") + +module CombinationalCircuit (a,b,c,d,y); + input a,b,c,d; + output y; + + reg y; + + always @ (a or b or c or d) + y <= (a==0) ? (a & b & c) : (a ^ b ^ c); + +endmodule diff --git a/src/lab/final-build/EXP_1sep2010/exp8/comb_tb.v b/src/lab/final-build/EXP_1sep2010/exp8/comb_tb.v old mode 100755 new mode 100644 index f7da81f6..2b98a6ac --- a/src/lab/final-build/EXP_1sep2010/exp8/comb_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp8/comb_tb.v @@ -1,32 +1,32 @@ -// Testbench for "CombinationalCircuit" module -// -// Illustrates efficient way to exhaustively test -// a combinational circuit - -module CombinationalCircuit_TB; - reg a,b,d,c; - wire y; - - // Instantiate the device-under-test - CombinationalCircuit DUT ( - .a(a), - .b(b), - .c(c), - .d(d), - .y(y) - ); - - // Declare loop index variable - integer k; - - // Apply input stimulus - initial begin - {a,b,c,d} = 0; - - for (k=0; k<=16; k=k+1) - #5 {a,b,c,d} = k; - - #20 $finish; - end - -endmodule +// Testbench for "CombinationalCircuit" module +// +// Illustrates efficient way to exhaustively test +// a combinational circuit + +module CombinationalCircuit_TB; + reg a,b,d,c; + wire y; + + // Instantiate the device-under-test + CombinationalCircuit DUT ( + .a(a), + .b(b), + .c(c), + .d(d), + .y(y) + ); + + // Declare loop index variable + integer k; + + // Apply input stimulus + initial begin + {a,b,c,d} = 0; + + for (k=0; k<=16; k=k+1) + #5 {a,b,c,d} = k; + + #20 $finish; + end + +endmodule diff --git a/src/lab/final-build/EXP_1sep2010/exp8/css/jquery-ui.css b/src/lab/final-build/EXP_1sep2010/exp8/css/jquery-ui.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/css/my.css b/src/lab/final-build/EXP_1sep2010/exp8/css/my.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/exp4_graph.php b/src/lab/final-build/EXP_1sep2010/exp8/exp4_graph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/exp8.php b/src/lab/final-build/EXP_1sep2010/exp8/exp8.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/exp8_simulate.php b/src/lab/final-build/EXP_1sep2010/exp8/exp8_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.html b/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.html new file mode 100644 index 00000000..b1b94f94 --- /dev/null +++ b/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.html @@ -0,0 +1,111 @@ + + + + + + Simulator + + + + + + + +

    Simulator for D Flip Flop

    + +
    +
    + + +
    + +

    Or Make your own waveform:

    + + +
    + +
    + +
    + +
    +
    + +
    +
    +
    +

    How to use the simulator

    +

    +

      +
    1. Choose the type of clock (positive/negative edge triggered)
    2. +
    3. Now you can either select predefined input waveforms or you can construct your own waveform (shown below)
    4. +
    5. Click on the simulate button to view the result
    6. +
    7. After viewing the simulation, click the clear button to simulate again
    8. +
    +

    +
    +
    +

    Making your own waveform

    +

    + + Enter the number of clock pulses in the text box.
    +
    + The waveform can be generated with the rules seen below.
    + Entering that letter in the textbox will give that corresponding wave.
    + Letters can be used together to generate a whole waveform. example: "phlhnl".
    + Each character in the waveform represents the wave in one clock pulse.
    +

    + +

    + A dot "." is used to continue the previous waveform. example: "ph..l.n".
    + Here are a few examples of waveforms:
    +

    + +
    + + \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.js b/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.js new file mode 100644 index 00000000..c17a08aa --- /dev/null +++ b/src/lab/final-build/EXP_1sep2010/exp8/finalSimulator.js @@ -0,0 +1,100 @@ +var s = ""; +var P = "P."; +var Q = ""; +var Q0 = ""; + function myFunction() + { + var clkval = document.getElementById("clock").value; + var waveval = document.getElementById("waveform").value; + var clkpulse = document.getElementById("number").value; + var str = document.getElementById("line").value; + if(clkval=="0") + { + alert("Choose a clock type!"); + return; + } + + if(clkpulse.length==0 && str.length==0) + { + if(waveval=="0") + { + alert("Choose a waveform!"); + return; + } + if(clkval=="1") + P="P......."; + else + P="N......."; + switch (waveval) + { + case "1": s="h.lp.hlh"; + break; + + case "2": s="lh.n.lhn"; + break; + + case "3": s="plhn.h.."; + break; + } + } + + else if(clkpulse.length!=0 && str.length!=0) + { + if(clkval=="1") + P="P"; + else + P="N" + var pulseno = parseInt(clkpulse); + for(var j=1;j - - - - jQuery UI Example Page - - - - - - - -

    Welcome to jQuery UI!

    -

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    -

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    - -

    YOUR COMPONENTS:

    - - -

    Accordion

    -
    -
    -

    First

    -
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    -
    -
    -

    Second

    -
    Phasellus mattis tincidunt nibh.
    -
    -
    -

    Third

    -
    Nam dui erat, auctor a, dignissim quis.
    -
    -
    - - -

    Tabs

    -
    - -
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    -
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    -
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    -
    - - -

    Dialog

    -

    Open Dialog

    - - -

    Overlay and Shadow Classes (not currently used in UI widgets)

    -
    -

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    - - -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    -
    - -
    - - - -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    - - - -

    Framework Icons (content color preview)

    -
      - -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    - - - -

    Slider

    -
    - - -

    Datepicker

    -
    - - -

    Progressbar

    -
    - - -

    Highlight / Error

    -
    -
    -

    - Hey! Sample ui-state-highlight style.

    -
    -
    -
    -
    -
    -

    - Alert: Sample ui-state-error style.

    -
    -
    - - - - - + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/JQuery/js/jquery-1.4.2.min.js b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/JQuery/js/jquery-1.4.2.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/demos.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010/exp8/junk/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp8/style.css b/src/lab/final-build/EXP_1sep2010/exp8/style.css new file mode 100644 index 00000000..21b4cdf6 --- /dev/null +++ b/src/lab/final-build/EXP_1sep2010/exp8/style.css @@ -0,0 +1,22 @@ +.box { + border-style: solid; + border-color: black; + border-width: 5px; + text-align: center; + } + + .lightblue-box { + background-color: lightblue; + text-align: left; + padding: 30px; + } + + .some-margin { + margin: 1em; + } + + .white-box { + background-color: white; + color: #fff; + padding: 1px; + } \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp8/tb_full_adder.v b/src/lab/final-build/EXP_1sep2010/exp8/tb_full_adder.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp9/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Feedback.html b/src/lab/final-build/EXP_1sep2010/exp9/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Introduction.html b/src/lab/final-build/EXP_1sep2010/exp9/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Manual.html b/src/lab/final-build/EXP_1sep2010/exp9/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Objective.html b/src/lab/final-build/EXP_1sep2010/exp9/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Procedure.html b/src/lab/final-build/EXP_1sep2010/exp9/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Quiz.html b/src/lab/final-build/EXP_1sep2010/exp9/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/References.html b/src/lab/final-build/EXP_1sep2010/exp9/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Simulator.html b/src/lab/final-build/EXP_1sep2010/exp9/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/Theory.html b/src/lab/final-build/EXP_1sep2010/exp9/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/boxes.css b/src/lab/final-build/EXP_1sep2010/exp9/boxes.css new file mode 100644 index 00000000..67d1ae51 --- /dev/null +++ b/src/lab/final-build/EXP_1sep2010/exp9/boxes.css @@ -0,0 +1,27 @@ + .box { + border-style: solid; + border-color: black; + border-width: 5px; + text-align: center; + } + + .lightblue-box { + background-color: lightblue; + padding: 30px; + } + + .red-box { + background-color: crimson; + color: #fff; + padding-right: 10px; + padding-left: 10px; + margin-right: 10px; + margin-left: 10px; + display: inline; + } + + .blue-box { + background-color: blue; + color: #fff; + padding: 1px; + } \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and.v old mode 100755 new mode 100644 index ad12ceb0..67d45f74 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and.v @@ -1,10 +1,10 @@ -/* A simple AND gate -File: and.v */ - -module andgate (a, b, y); -input a, b; -output y; - -assign y = a & b; - +/* A simple AND gate +File: and.v */ + +module andgate (a, b, y); +input a, b; +output y; + +assign y = a & b; + endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/and_tb.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffn.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffn.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffn_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffn_tb.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp.v old mode 100755 new mode 100644 index 9a9fb527..17661477 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp.v @@ -5,16 +5,16 @@ output q; reg q; -//always @ ( posedge clk ) +//always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; -//end -always @ (posedge clk ) -if (~r) begin -q <= 1'b0; -end else begin +//end +always @ (posedge clk ) +if (~r) begin +q <= 1'b0; +end else begin q <= d; end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp_tb.v old mode 100755 new mode 100644 index c497f817..4bbb8b9a --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/dffp_tb.v @@ -6,19 +6,19 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_n_complete.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_n_complete.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_p_complete.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_p_complete.v old mode 100755 new mode 100644 index a0d228db..ebd3e89e --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_p_complete.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/ff_p_complete.v @@ -6,16 +6,16 @@ module dff(q,clk,d,r); reg q; - //always @ ( posedge clk ) + //always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; - //end - always @ (posedge clk ) - if (~r) begin - q <= 1'b0; - end else begin + //end + always @ (posedge clk ) + if (~r) begin + q <= 1'b0; + end else begin q <= d; end endmodule @@ -27,18 +27,18 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux.v old mode 100755 new mode 100644 index 176f2550..1a13b94a --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux.v @@ -4,7 +4,7 @@ module mux( s1, s0, d3, d2, d1, d0, q ); input s1,s0; input d3,d2,d1,d0; output q; - + reg q; always @( s1 or s0 or d3 or d2 or d1 or d0) diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2_tb.v old mode 100755 new mode 100644 index 643676d1..aaa38ac4 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux2_tb.v @@ -5,7 +5,7 @@ module mux2_tb; mux2 mux2(s, d1, d0, q ); initial begin - + #3 d1=1'b0; d0=1'b1; s=1'b0; #5 d1=1'b0;d0=1'b0; s=1'b1; #3 d1=1'b0; d0=1'b1; s=1'b1; #5 d1=1'b0;d0=1'b0; s=1'b0; end diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux_tb.v old mode 100755 new mode 100644 index ee081a0a..df1bf0f6 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/EXTRA_Verilog_Code/mux_tb.v @@ -14,7 +14,7 @@ module mux_tb; // initial // $monitor(d3,d2,d1,d0,s1,s0,q); //endmodule - -always @( s1 or s0 or d3 or d2 or d1 or d0) -#1 $display("t=%t",$time," s=%b",s1,s0," q=%b",q," d=%b%b%b%b",d3,d2,d1,d0); + +always @( s1 or s0 or d3 or d2 or d1 or d0) +#1 $display("t=%t",$time," s=%b",s1,s0," q=%b",q," d=%b%b%b%b",d3,d2,d1,d0); endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.v old mode 100755 new mode 100644 index 689fe1fd..4a022a26 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.v @@ -1,11 +1,11 @@ -`timescale 1ns/1ns -module dffn(q,clk,d); -input d, clk; -output q; -reg q; - -always @ (negedge clk ) -begin -q <= d; -end +`timescale 1ns/1ns +module dffn(q,clk,d); +input d, clk; +output q; +reg q; + +always @ (negedge clk ) +begin +q <= d; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.vcd old mode 100755 new mode 100644 index b00eb9e9..47c6c075 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn.vcd @@ -1,41 +1,41 @@ -$date - Sat Jun 25 16:49:02 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -1! -0" -#10 -1" -0# -#15 -0! -0" -#20 -1" -1# -#25 -1! -0" +$date + Sat Jun 25 16:49:02 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +1! +0" +#10 +1" +0# +#15 +0! +0" +#20 +1" +1# +#25 +1! +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn1.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn1.vcd old mode 100755 new mode 100644 index 61ffe86c..c7b8ab0f --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn1.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn1.vcd @@ -1,53 +1,53 @@ -$date - Sat Jun 25 16:58:57 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1" -#15 -0" -#20 -1" -1# -#25 -1! -0" -#30 -0# -#35 -1" -#40 -0! -0" -#45 -1" -1# -#50 -1! -0" +$date + Sat Jun 25 16:58:57 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1" +#15 +0" +#20 +1" +1# +#25 +1! +0" +#30 +0# +#35 +1" +#40 +0! +0" +#45 +1" +1# +#50 +1! +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn2.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn2.vcd old mode 100755 new mode 100644 index 14764cbe..02857116 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn2.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn2.vcd @@ -1,52 +1,52 @@ -$date - Sat Jun 25 17:03:08 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1# -#15 -0# -#20 -1" -1# -#25 -1! -0" -#30 -1" -0# -#40 -0" -1# -#45 -1" -#50 -0! -0" -0# +$date + Sat Jun 25 17:03:08 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1# +#15 +0# +#20 +1" +1# +#25 +1! +0" +#30 +1" +0# +#40 +0" +1# +#45 +1" +#50 +0! +0" +0# diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn3.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn3.vcd old mode 100755 new mode 100644 index a0aed95a..e55e93aa --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn3.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn3.vcd @@ -1,66 +1,66 @@ -$date - Sat Jun 25 17:07:17 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn3_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1" -#15 -0" -#20 -1" -1# -#25 -1! -0" -#30 -1" -#35 -0! -0" -0# -#40 -1" -#45 -0" -#50 -1" -1# -#55 -1! -0" -#60 -1" -#65 -0! -0" -0# -#70 -1" -#75 -0" +$date + Sat Jun 25 17:07:17 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn3_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1" +#15 +0" +#20 +1" +1# +#25 +1! +0" +#30 +1" +#35 +0! +0" +0# +#40 +1" +#45 +0" +#50 +1" +1# +#55 +1! +0" +#60 +1" +#65 +0! +0" +0# +#70 +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn4.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn4.vcd old mode 100755 new mode 100644 index b369e1c0..653c83ff --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn4.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn4.vcd @@ -1,42 +1,42 @@ -$date - Sat Jun 25 17:10:08 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn4_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#20 -1" -1# -#35 -0" -0# -#50 -1" -1# -#65 -0" -0# +$date + Sat Jun 25 17:10:08 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn4_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#20 +1" +1# +#35 +0" +0# +#50 +1" +1# +#65 +0" +0# diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb.v old mode 100755 new mode 100644 index 6fc36dc4..8a5a06e7 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb.v @@ -1,25 +1,25 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb1.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb1.v old mode 100755 new mode 100644 index c3578072..e89be857 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb1.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb1.v @@ -1,31 +1,31 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn1.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn1.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb2.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb2.v old mode 100755 new mode 100644 index 42f9331f..a7bb4423 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb2.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb2.v @@ -1,31 +1,31 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn2.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn2.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb3.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb3.v old mode 100755 new mode 100644 index 3b1d2aa2..5088fd2e --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb3.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb3.v @@ -1,37 +1,37 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn3_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn3.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn3_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn3.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb4.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb4.v old mode 100755 new mode 100644 index 85f24497..c02e2c65 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb4.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffn/dffn_tb4.v @@ -1,37 +1,37 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn4_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn4.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn4_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn4.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp.v old mode 100755 new mode 100644 index 2cc2507e..446efc00 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp.v @@ -1,11 +1,11 @@ -`timescale 1ns/1ns -module dffp(q,clk,d); -input d, clk; -output q; -reg q; - -always @ (posedge clk ) -begin -q <= d; -end -endmodule +`timescale 1ns/1ns +module dffp(q,clk,d); +input d, clk; +output q; +reg q; + +always @ (posedge clk ) +begin +q <= d; +end +endmodule diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp1.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp1.vcd old mode 100755 new mode 100644 index 9c82a98b..9b1fd528 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp1.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp1.vcd @@ -1,53 +1,53 @@ -$date - Sat Jun 25 17:16:45 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp1_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -1! -$end -#5 -0" -0# -#10 -0! -1" -#15 -0" -#20 -1! -1" -1# -#25 -0" -#30 -0# -#35 -0! -1" -#40 -0" -#45 -1! -1" -1# -#50 -0" +$date + Sat Jun 25 17:16:45 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp1_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +1! +$end +#5 +0" +0# +#10 +0! +1" +#15 +0" +#20 +1! +1" +1# +#25 +0" +#30 +0# +#35 +0! +1" +#40 +0" +#45 +1! +1" +1# +#50 +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp2.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp2.vcd old mode 100755 new mode 100644 index 199f1f9a..ab88cc9e --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp2.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp2.vcd @@ -1,65 +1,65 @@ -$date - Sat Jun 25 17:25:13 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp2_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -1! -$end -#5 -0" -0# -#10 -0! -1" -#15 -0" -1# -#20 -1! -1" -#25 -0" -#30 -0# -#35 -1" -1# -#40 -0" -0# -#45 -1" -1# -#50 -0" -0# -#60 -1" -1# -#65 -0" -0# -#70 -1" -1# -#75 -0" +$date + Sat Jun 25 17:25:13 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp2_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +1! +$end +#5 +0" +0# +#10 +0! +1" +#15 +0" +1# +#20 +1! +1" +#25 +0" +#30 +0# +#35 +1" +1# +#40 +0" +0# +#45 +1" +1# +#50 +0" +0# +#60 +1" +1# +#65 +0" +0# +#70 +1" +1# +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp3.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp3.vcd old mode 100755 new mode 100644 index 3fc78629..7c7074f3 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp3.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp3.vcd @@ -1,60 +1,60 @@ -$date - Sat Jun 25 17:25:47 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp3_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#5 -0! -1" -0# -#15 -0" -1# -#20 -1! -1" -#25 -0" -0# -#35 -1# -#40 -1" -#45 -0# -#50 -0" -#55 -1# -#60 -1" -#65 -0" -0# -#70 -0! -1" -#75 -0" -1# +$date + Sat Jun 25 17:25:47 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp3_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#5 +0! +1" +0# +#15 +0" +1# +#20 +1! +1" +#25 +0" +0# +#35 +1# +#40 +1" +#45 +0# +#50 +0" +#55 +1# +#60 +1" +#65 +0" +0# +#70 +0! +1" +#75 +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp4.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp4.vcd old mode 100755 new mode 100644 index aeca40ca..a38c66b1 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp4.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp4.vcd @@ -1,52 +1,52 @@ -$date - Sat Jun 25 17:26:20 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp4_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#5 -1! -1" -#15 -0" -#20 -1" -#25 -0" -0# -#40 -0! -1" -#50 -0" -#55 -1# -#60 -1! -1" -#65 -0" -#70 -1" -#75 -0" +$date + Sat Jun 25 17:26:20 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp4_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#5 +1! +1" +#15 +0" +#20 +1" +#25 +0" +0# +#40 +0! +1" +#50 +0" +#55 +1# +#60 +1! +1" +#65 +0" +#70 +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp5.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp5.vcd old mode 100755 new mode 100644 index 19ee0d8c..78df187d --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp5.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp5.vcd @@ -1,43 +1,43 @@ -$date - Sat Jun 25 17:26:50 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp5_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#10 -1! -1" -#25 -0" -0# -#40 -0! -1" -#55 -0" -1# -#70 -1! -1" -#75 -0" +$date + Sat Jun 25 17:26:50 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp5_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#10 +1! +1" +#25 +0" +0# +#40 +0! +1" +#55 +0" +1# +#70 +1! +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb1.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb1.v old mode 100755 new mode 100644 index 5a19652f..98039dc3 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb1.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb1.v @@ -1,31 +1,31 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp1_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp1.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp1_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp1.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb2.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb2.v old mode 100755 new mode 100644 index e219ee04..3ab3bc4f --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb2.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb2.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp2_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp2.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp2_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp2.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb3.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb3.v old mode 100755 new mode 100644 index 7424440b..fe911a97 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb3.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb3.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp3_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp3.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp3_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp3.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb4.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb4.v old mode 100755 new mode 100644 index 5bb14ee0..d3ec1994 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb4.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb4.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp4_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp4.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp4_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp4.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb5.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb5.v old mode 100755 new mode 100644 index 4292b558..1fba97a4 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb5.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/dffp/dffp_tb5.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp5_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp5.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp5_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp5.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.v old mode 100755 new mode 100644 index 8a204784..27e66829 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.v @@ -1,14 +1,14 @@ -`timescale 1ns/1ns -module mux2( clk, In1, In2, Out ); - -input clk,In1,In2; -output Out; - -reg Out; - -always @( clk or In2 or In1) -begin - Out = ( ~clk & In1 ) | ( clk & In2 ); -end - +`timescale 1ns/1ns +module mux2( clk, In1, In2, Out ); + +input clk,In1,In2; +output Out; + +reg Out; + +always @( clk or In2 or In1) +begin + Out = ( ~clk & In1 ) | ( clk & In2 ); +end + endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.vcd old mode 100755 new mode 100644 index 44793558..38a6bc91 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2.vcd @@ -1,43 +1,43 @@ -$date - Sat Jun 25 17:52:37 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -0! -1$ -0" -#11 -1" -#16 -0$ -0" +$date + Sat Jun 25 17:52:37 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +0! +1$ +0" +#11 +1" +#16 +0$ +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_1.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_1.vcd old mode 100755 new mode 100644 index c67cede7..ab8d2387 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_1.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_1.vcd @@ -1,72 +1,72 @@ -$date - Sat Jun 25 18:03:01 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb1 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -1$ -0" -1# -#11 -0$ -1" -#16 -0! -0" -0# -#19 -1! -1" -#24 -1$ -0" -1# -#27 -1" -#32 -0! -0" -0# -#35 -1! -0$ -1" -#40 -1$ -0" -1# -#43 -1" -#48 -0! -0$ -0" +$date + Sat Jun 25 18:03:01 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb1 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +1$ +0" +1# +#11 +0$ +1" +#16 +0! +0" +0# +#19 +1! +1" +#24 +1$ +0" +1# +#27 +1" +#32 +0! +0" +0# +#35 +1! +0$ +1" +#40 +1$ +0" +1# +#43 +1" +#48 +0! +0$ +0" diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_2.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_2.vcd old mode 100755 new mode 100644 index 3f165115..20145d66 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_2.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_2.vcd @@ -1,67 +1,67 @@ -$date - Sat Jun 25 18:03:51 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb2 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -1$ -1# -#11 -0! -0# -#16 -0$ -0" -#24 -1! -1$ -1# -#27 -0$ -1" -#32 -0! -1$ -0# -#35 -0$ -0" -#40 -1# -#43 -1$ -1" -0# -#48 -0$ -0" -1# +$date + Sat Jun 25 18:03:51 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb2 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +1$ +1# +#11 +0! +0# +#16 +0$ +0" +#24 +1! +1$ +1# +#27 +0$ +1" +#32 +0! +1$ +0# +#35 +0$ +0" +#40 +1# +#43 +1$ +1" +0# +#48 +0$ +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_3.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_3.vcd old mode 100755 new mode 100644 index 51b70d9d..ab4fb0ba --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_3.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_3.vcd @@ -1,71 +1,71 @@ -$date - Sat Jun 25 18:04:23 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb3 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -0! -0$ -0" -0# -#8 -1! -1" -1# -#11 -0! -1$ -0# -#16 -0$ -0" -1# -#19 -0# -#24 -1! -1$ -1" -1# -#32 -0! -0" -0# -#35 -0$ -#40 -1! -1" -1# -#43 -0! -1$ -0# -#48 -0$ -0" -1# +$date + Sat Jun 25 18:04:23 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb3 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +0! +0$ +0" +0# +#8 +1! +1" +1# +#11 +0! +1$ +0# +#16 +0$ +0" +1# +#19 +0# +#24 +1! +1$ +1" +1# +#32 +0! +0" +0# +#35 +0$ +#40 +1! +1" +1# +#43 +0! +1$ +0# +#48 +0$ +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_4.vcd b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_4.vcd old mode 100755 new mode 100644 index 242a8553..cc13f19e --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_4.vcd +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_4.vcd @@ -1,66 +1,66 @@ -$date - Sat Jun 25 18:05:16 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb4 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -0! -1$ -#11 -0" -#16 -0$ -1# -#19 -1! -1" -#24 -1$ -#27 -0" -#32 -0! -0$ -0# -#35 -1! -1" -#40 -0! -1$ -#43 -1! -0" -1# -#48 -0! -0$ +$date + Sat Jun 25 18:05:16 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb4 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +0! +1$ +#11 +0" +#16 +0$ +1# +#19 +1! +1" +#24 +1$ +#27 +0" +#32 +0! +0$ +0# +#35 +1! +1" +#40 +0! +1$ +#43 +1! +0" +1# +#48 +0! +0$ diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb.v old mode 100755 new mode 100644 index aff66150..e7110dbb --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb.v @@ -1,24 +1,24 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb1.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb1.v old mode 100755 new mode 100644 index 49b262cb..06f8c85a --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb1.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb1.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb1; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_1.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb1; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_1.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb2.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb2.v old mode 100755 new mode 100644 index b4063ae1..4a9e5a79 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb2.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb2.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb2; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_2.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb2; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_2.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb3.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb3.v old mode 100755 new mode 100644 index 2f31425d..b32dfa50 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb3.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb3.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb3; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_3.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb3; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_3.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb4.v b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb4.v old mode 100755 new mode 100644 index c5f7b157..f69aa204 --- a/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb4.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/codes/mux2/mux2_tb4.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb4; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - #3 In2=1'b0;In1=1'b0; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b0; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b0; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_4.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb4; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + #3 In2=1'b0;In1=1'b0; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b0; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b0; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_4.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$1.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.html b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.java b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog_simulate.php b/src/lab/final-build/EXP_1sep2010/exp9/exp9_flipflop_positive_verilog_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$1.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.class b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.html b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.java b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog_simulate.php b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/exp9_flipflop_negative_verilog_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/graph.gif b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/simulate.png b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp9/exp9_negative/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/ff_n_complete.v b/src/lab/final-build/EXP_1sep2010/exp9/ff_n_complete.v old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/ff_p_complete.v b/src/lab/final-build/EXP_1sep2010/exp9/ff_p_complete.v old mode 100755 new mode 100644 index a0d228db..ebd3e89e --- a/src/lab/final-build/EXP_1sep2010/exp9/ff_p_complete.v +++ b/src/lab/final-build/EXP_1sep2010/exp9/ff_p_complete.v @@ -6,16 +6,16 @@ module dff(q,clk,d,r); reg q; - //always @ ( posedge clk ) + //always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; - //end - always @ (posedge clk ) - if (~r) begin - q <= 1'b0; - end else begin + //end + always @ (posedge clk ) + if (~r) begin + q <= 1'b0; + end else begin q <= d; end endmodule @@ -27,18 +27,18 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/graph.gif b/src/lab/final-build/EXP_1sep2010/exp9/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/simulate.png b/src/lab/final-build/EXP_1sep2010/exp9/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp9/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/graph.gif b/src/lab/final-build/EXP_1sep2010/exp9/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/simulate.png b/src/lab/final-build/EXP_1sep2010/exp9/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010/exp9/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/exp9/layout3.html b/src/lab/final-build/EXP_1sep2010/exp9/layout3.html new file mode 100644 index 00000000..ca191431 --- /dev/null +++ b/src/lab/final-build/EXP_1sep2010/exp9/layout3.html @@ -0,0 +1,40 @@ + + + + + Simulator + + + + + + +

    Simulator for D Flip Flop

    + +
    + +
    + + + + + +
    + +
    Graph goes here
    +
    + + \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/graph.gif b/src/lab/final-build/EXP_1sep2010/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/simulate.png b/src/lab/final-build/EXP_1sep2010/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/index1.html b/src/lab/final-build/EXP_1sep2010/index1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Feedback.html b/src/lab/final-build/EXP_1sep2010/layout/Feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Introduction.html b/src/lab/final-build/EXP_1sep2010/layout/Introduction.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Manual.html b/src/lab/final-build/EXP_1sep2010/layout/Manual.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Objective.html b/src/lab/final-build/EXP_1sep2010/layout/Objective.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Procedure.html b/src/lab/final-build/EXP_1sep2010/layout/Procedure.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Quiz.html b/src/lab/final-build/EXP_1sep2010/layout/Quiz.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/References.html b/src/lab/final-build/EXP_1sep2010/layout/References.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Simulator.html b/src/lab/final-build/EXP_1sep2010/layout/Simulator.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/Theory.html b/src/lab/final-build/EXP_1sep2010/layout/Theory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/exp1.html b/src/lab/final-build/EXP_1sep2010/layout/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/exp1.java b/src/lab/final-build/EXP_1sep2010/layout/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout/index.html b/src/lab/final-build/EXP_1sep2010/layout/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/exp1.java b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/index.html b/src/lab/final-build/EXP_1sep2010/layout_15Aug2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/about.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/body.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/home.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/title.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/.spiceinit b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/about.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/body.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/home.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/title.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/inv22.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/VLSI_VLab/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/anushabackup.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/anushabackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_rightpanel.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_rightpanel.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_toolbar.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/backup_toolbar.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/before_draw.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/before_draw.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/buttonbackup.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/buttonbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/cgi-bin b/src/lab/final-build/EXP_1sep2010/layout_25June2011/cgi-bin old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$Hello.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$Hello.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$2.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$2.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$3.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$3.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$4.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$4.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$5.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$6.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$6.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$7.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$7.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$8.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$8.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$9.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$9.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/hist b/src/lab/final-build/EXP_1sep2010/layout_25June2011/hist old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/index.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/inv22.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/mouse_backup.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/mouse_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/newbackup.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/newbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/ref.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/ref.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010/layout_25June2011/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_25June2011/temp_backup.java b/src/lab/final-build/EXP_1sep2010/layout_25June2011/temp_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/exp1.html b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/exp1.java b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/index.html b/src/lab/final-build/EXP_1sep2010/layout_28Aug2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/.spiceinit b/src/lab/final-build/EXP_1sep2010_old/exp1/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old/exp1/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/a.sh b/src/lab/final-build/EXP_1sep2010_old/exp1/a.sh old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/bsim4.out b/src/lab/final-build/EXP_1sep2010_old/exp1/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1.html b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010_old/exp1/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old/exp1/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old/exp1/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old/exp1/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/index.html b/src/lab/final-build/EXP_1sep2010_old/exp1/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/inv2.sp b/src/lab/final-build/EXP_1sep2010_old/exp1/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/inv22.sp b/src/lab/final-build/EXP_1sep2010_old/exp1/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/node.class b/src/lab/final-build/EXP_1sep2010_old/exp1/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp1/outfile b/src/lab/final-build/EXP_1sep2010_old/exp1/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/.spiceinit b/src/lab/final-build/EXP_1sep2010_old/exp2/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old/exp2/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/bsim4.out b/src/lab/final-build/EXP_1sep2010_old/exp2/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$1.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2.html b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_out.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_out.java b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_simulate.php b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nand_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_out.class b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_out.java b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_simulate.php b/src/lab/final-build/EXP_1sep2010_old/exp2/exp2_nor_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old/exp2/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old/exp2/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old/exp2/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/index.html b/src/lab/final-build/EXP_1sep2010_old/exp2/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/inv2.sp b/src/lab/final-build/EXP_1sep2010_old/exp2/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/inv22_nand.sp b/src/lab/final-build/EXP_1sep2010_old/exp2/inv22_nand.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/inv22_nor.sp b/src/lab/final-build/EXP_1sep2010_old/exp2/inv22_nor.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/nor.sp b/src/lab/final-build/EXP_1sep2010_old/exp2/nor.sp old mode 100755 new mode 100644 index 84d405c1..89e62819 --- a/src/lab/final-build/EXP_1sep2010_old/exp2/nor.sp +++ b/src/lab/final-build/EXP_1sep2010_old/exp2/nor.sp @@ -1,16 +1,16 @@ -*inverter -.include '45nm_HP.pm' -M1 out b N Vdd PMOS l=50n w= 450n -M2 N a vdd vdd PMOS l=50n w= 450n -M3 0 a out 0 NMOS l=50n w=100n -M4 0 b out 0 NMOS l=50n w=100n -cl out 0 100f -Vdd Vdd 0 1.1 -Va a 0 pulse (0 1.1 0 1n 1n 5n 10n) -Vb b 0 pulse (0 1.1 0 1n 1n 10n 20n) -.tran 1n 100n -*.print V(A) V(B) -*.print V(out) -.save V(a) V(b) -.save V(out) -.end +*inverter +.include '45nm_HP.pm' +M1 out b N Vdd PMOS l=50n w= 450n +M2 N a vdd vdd PMOS l=50n w= 450n +M3 0 a out 0 NMOS l=50n w=100n +M4 0 b out 0 NMOS l=50n w=100n +cl out 0 100f +Vdd Vdd 0 1.1 +Va a 0 pulse (0 1.1 0 1n 1n 5n 10n) +Vb b 0 pulse (0 1.1 0 1n 1n 10n 20n) +.tran 1n 100n +*.print V(A) V(B) +*.print V(out) +.save V(a) V(b) +.save V(out) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/outfile_nand b/src/lab/final-build/EXP_1sep2010_old/exp2/outfile_nand old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/outfile_nor b/src/lab/final-build/EXP_1sep2010_old/exp2/outfile_nor old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp2/rawfile b/src/lab/final-build/EXP_1sep2010_old/exp2/rawfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/.spiceinit b/src/lab/final-build/EXP_1sep2010_old/exp3/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old/exp3/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/bsim4.out b/src/lab/final-build/EXP_1sep2010_old/exp3/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$1.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3.class b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3.html b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_simulate.php b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xnor_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_simulate.php b/src/lab/final-build/EXP_1sep2010_old/exp3/exp3_xor_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old/exp3/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old/exp3/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old/exp3/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/index.html b/src/lab/final-build/EXP_1sep2010_old/exp3/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/inv33_xor.sp b/src/lab/final-build/EXP_1sep2010_old/exp3/inv33_xor.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/outfile_xor b/src/lab/final-build/EXP_1sep2010_old/exp3/outfile_xor old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/try.php b/src/lab/final-build/EXP_1sep2010_old/exp3/try.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/exp3/xor1.sp b/src/lab/final-build/EXP_1sep2010_old/exp3/xor1.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/index.html b/src/lab/final-build/EXP_1sep2010_old/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/inv33_xor.sp b/src/lab/final-build/EXP_1sep2010_old/inv33_xor.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old/try.php b/src/lab/final-build/EXP_1sep2010_old/try.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.html old mode 100755 new mode 100644 index b39ca1c7..4d73c124 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.html @@ -1,15 +1,15 @@ - - - -

    - - - - - - - -
    - - - + + + +
    + + + + + + + +
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.swf b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/exp1.swf old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/layout.swf b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/layout.swf old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/shashank exp1.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/shashank exp1.js old mode 100755 new mode 100644 index 36f9009a..4cd18d7f --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/shashank exp1.js +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/Manual_exp1/shashank exp1.js @@ -1,3 +1,3 @@ -obj=document.getElementsByTagName('object'); -for (var i=0; i - - - - jQuery UI Example Page - - - - - - - -

    Welcome to jQuery UI!

    -

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    -

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    - -

    YOUR COMPONENTS:

    - - -

    Accordion

    -
    -
    -

    First

    -
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    -
    -
    -

    Second

    -
    Phasellus mattis tincidunt nibh.
    -
    -
    -

    Third

    -
    Nam dui erat, auctor a, dignissim quis.
    -
    -
    - - -

    Tabs

    -
    - -
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    -
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    -
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    -
    - - -

    Dialog

    -

    Open Dialog

    - - -

    Overlay and Shadow Classes (not currently used in UI widgets)

    -
    -

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    - - -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    -
    - -
    - - - -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    - - - -

    Framework Icons (content color preview)

    -
      - -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    - - - -

    Slider

    -
    - - -

    Datepicker

    -
    - - -

    Progressbar

    -
    - - -

    Highlight / Error

    -
    -
    -

    - Hey! Sample ui-state-highlight style.

    -
    -
    -
    -
    -
    -

    - Alert: Sample ui-state-error style.

    -
    -
    - - - - - + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/demos.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/junk/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_13Nov2010_exp4.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_13Nov2010_exp4.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_13Nov2010_exp4_graph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_13Nov2010_exp4_graph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_exp4_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp4/version1_exp4_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Multiplexer_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Multiplexer_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/exp5_Pass_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_Pass_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_mux.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_pass.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/exp5_pass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/pass.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp5/pass.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_negitive.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_negitive.sp old mode 100755 new mode 100644 index 45b242b5..22d90512 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_negitive.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_negitive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(q1) V(In1) V(clk) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(q1) V(In1) V(clk) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_positive.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_positive.sp old mode 100755 new mode 100644 index 5baba96b..25b4aad4 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_positive.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/dlatch_positive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk out Vdd PMOS l=50n w=450n -M2 In1 clk1 out 0 NMOS l=50n w=100n -M3 In2 clk1 out Vdd PMOS l=50n w=450n -M4 In2 clk out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(out) V(In1) V(clk) V(q1) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk out Vdd PMOS l=50n w=450n +M2 In1 clk1 out 0 NMOS l=50n w=100n +M3 In2 clk1 out Vdd PMOS l=50n w=450n +M4 In2 clk out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(out) V(In1) V(clk) V(q1) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_flipflop_positive_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_latch_positive_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/NegativeEdgeD_FF.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/NegativeEdgeD_FF.sp old mode 100755 new mode 100644 index 0250eca0..055fe13f --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/NegativeEdgeD_FF.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/NegativeEdgeD_FF.sp @@ -1,38 +1,38 @@ -*NegativeEdgeD flip flop -.include '45nm_HP.pm' -.option post=2 -M1 D clk1 out Vdd PMOS l=50n w=450n -M2 D clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q out Vdd Vdd PMOS l=50n w= 450n -M6 q out 0 0 NMOS l=50n w=100n -cl q 0 100f -M7 In2 q Vdd Vdd PMOS l=50n w= 450n -M8 In2 q 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q clk out1 Vdd PMOS l=50n w= 450n -M10 q clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q1 out1 Vdd Vdd PMOS l=50n w= 450n -M14 q1 out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q1 Vdd Vdd PMOS l=50n w= 450n -M16 In3 q1 0 0 NMOS l=50n w=100n -c4 In3 0 100f - -VClk clk 0 PULSE(0 1.1 0 100p 100p 1550n 3000n) -VClk1 clk1 0 PULSE(1.1 0 0 100p 100p 1550n 3000n) -VIn1 D 0 PULSE(0 1.1 0 100p 100p 95n 200n) -.tran 10ns 20000n -*.print tran V(out) V(q) V(clk) V(clk1) V(D) -.save V(q) V(clk) V(D) -.end - -*VIn1 In1 0 pulse (0 1.1 0 1n 1n 16n 30n ) -*Vclk clk 0 pulse (0 1.1 0 1n 1n 4n 8n ) -*Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 4n 8n ) -*.tran 1n 100n +*NegativeEdgeD flip flop +.include '45nm_HP.pm' +.option post=2 +M1 D clk1 out Vdd PMOS l=50n w=450n +M2 D clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q out Vdd Vdd PMOS l=50n w= 450n +M6 q out 0 0 NMOS l=50n w=100n +cl q 0 100f +M7 In2 q Vdd Vdd PMOS l=50n w= 450n +M8 In2 q 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q clk out1 Vdd PMOS l=50n w= 450n +M10 q clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q1 out1 Vdd Vdd PMOS l=50n w= 450n +M14 q1 out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q1 Vdd Vdd PMOS l=50n w= 450n +M16 In3 q1 0 0 NMOS l=50n w=100n +c4 In3 0 100f + +VClk clk 0 PULSE(0 1.1 0 100p 100p 1550n 3000n) +VClk1 clk1 0 PULSE(1.1 0 0 100p 100p 1550n 3000n) +VIn1 D 0 PULSE(0 1.1 0 100p 100p 95n 200n) +.tran 10ns 20000n +*.print tran V(out) V(q) V(clk) V(clk1) V(D) +.save V(q) V(clk) V(D) +.end + +*VIn1 In1 0 pulse (0 1.1 0 1n 1n 16n 30n ) +*Vclk clk 0 pulse (0 1.1 0 1n 1n 4n 8n ) +*Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 4n 8n ) +*.tran 1n 100n diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/dlatch_negitive.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/dlatch_negitive.sp old mode 100755 new mode 100644 index 45b242b5..22d90512 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/dlatch_negitive.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/dlatch_negitive.sp @@ -1,24 +1,24 @@ - *D latch -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - - - -Vdd Vdd 0 1.1 -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(q1) V(In1) V(clk) -.end + *D latch +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + + + +Vdd Vdd 0 1.1 +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(q1) V(In1) V(clk) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_flipflop_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/exp6_latch_negative_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/flipflop_negative.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/flipflop_negative.sp old mode 100755 new mode 100644 index 8f5bd92b..9599b0c2 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/flipflop_negative.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/flipflop_negative.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk out1 Vdd PMOS l=50n w= 450n -M10 q1 clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk out1 Vdd PMOS l=50n w= 450n +M10 q1 clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/exp6_negative/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_negative.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_negative.sp old mode 100755 new mode 100644 index 8f5bd92b..9599b0c2 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_negative.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_negative.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk1 out Vdd PMOS l=50n w=450n -M2 In1 clk out 0 NMOS l=50n w=100n -M3 In2 clk out Vdd PMOS l=50n w=450n -M4 In2 clk1 out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk out1 Vdd PMOS l=50n w= 450n -M10 q1 clk1 out1 0 NMOS l=50n w=100n -M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n -M12 In3 clk out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk1 out Vdd PMOS l=50n w=450n +M2 In1 clk out 0 NMOS l=50n w=100n +M3 In2 clk out Vdd PMOS l=50n w=450n +M4 In2 clk1 out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk out1 Vdd PMOS l=50n w= 450n +M10 q1 clk1 out1 0 NMOS l=50n w=100n +M11 In3 clk1 out1 Vdd PMOS l=50n w= 450n +M12 In3 clk out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_positive.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_positive.sp old mode 100755 new mode 100644 index 8d0cdf73..f22870f3 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_positive.sp +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/flipflop_positive.sp @@ -1,34 +1,34 @@ - *D flip flop -.include '45nm_HP.pm' -M1 In1 clk out Vdd PMOS l=50n w=450n -M2 In1 clk1 out 0 NMOS l=50n w=100n -M3 In2 clk1 out Vdd PMOS l=50n w=450n -M4 In2 clk out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -M5 q1 out Vdd Vdd PMOS l=50n w= 450n -M6 q1 out 0 0 NMOS l=50n w=100n -cl q1 0 100f -M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n -M8 In2 q1 0 0 NMOS l=50n w=100n -c2 In2 0 100f - -M9 q1 clk1 out1 Vdd PMOS l=50n w= 450n -M10 q1 clk out1 0 NMOS l=50n w=100n -M11 In3 clk out1 Vdd PMOS l=50n w= 450n -M12 In3 clk1 out1 0 NMOS l=50n w=100n -M13 q out1 Vdd Vdd PMOS l=50n w= 450n -M14 q out1 0 0 NMOS l=50n w=100n -c3 q 0 100f -M15 In3 q Vdd Vdd PMOS l=50n w= 450n -M16 In3 q 0 0 NMOS l=50n w=100n -c4 In3 0 100f -Vdd Vdd 0 1.1 - - -VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) - -Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) -Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) -.tran 1n 100n -.save V(In1) V(clk) V(q) -.end + *D flip flop +.include '45nm_HP.pm' +M1 In1 clk out Vdd PMOS l=50n w=450n +M2 In1 clk1 out 0 NMOS l=50n w=100n +M3 In2 clk1 out Vdd PMOS l=50n w=450n +M4 In2 clk out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +M5 q1 out Vdd Vdd PMOS l=50n w= 450n +M6 q1 out 0 0 NMOS l=50n w=100n +cl q1 0 100f +M7 In2 q1 Vdd Vdd PMOS l=50n w= 450n +M8 In2 q1 0 0 NMOS l=50n w=100n +c2 In2 0 100f + +M9 q1 clk1 out1 Vdd PMOS l=50n w= 450n +M10 q1 clk out1 0 NMOS l=50n w=100n +M11 In3 clk out1 Vdd PMOS l=50n w= 450n +M12 In3 clk1 out1 0 NMOS l=50n w=100n +M13 q out1 Vdd Vdd PMOS l=50n w= 450n +M14 q out1 0 0 NMOS l=50n w=100n +c3 q 0 100f +M15 In3 q Vdd Vdd PMOS l=50n w= 450n +M16 In3 q 0 0 NMOS l=50n w=100n +c4 In3 0 100f +Vdd Vdd 0 1.1 + + +VIn1 In1 0 pulse (0 1 0 1n 1n 16n 30n ) + +Vclk clk 0 pulse (0 1 0 1n 1n 4n 8n ) +Vclk1 clk1 0 pulse (1 0 0 1n 1n 4n 8n ) +.tran 1n 100n +.save V(In1) V(clk) V(q) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp6/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/exp7_size_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp7/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/a.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/a.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb.v index b90dc6dc..d6f00222 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb.v @@ -1,12 +1,12 @@ -// Synthesizable circuit (the "device-under-test") - -module CombinationalCircuit (a,b,c,d,y); - input a,b,c,d; - output y; - - reg y; - - always @ (a or b or c or d) - y <= (a==0) ? (a & b & c) : (a ^ b ^ c); - -endmodule +// Synthesizable circuit (the "device-under-test") + +module CombinationalCircuit (a,b,c,d,y); + input a,b,c,d; + output y; + + reg y; + + always @ (a or b or c or d) + y <= (a==0) ? (a & b & c) : (a ^ b ^ c); + +endmodule diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb_tb.v index f7da81f6..2b98a6ac 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/comb_tb.v @@ -1,32 +1,32 @@ -// Testbench for "CombinationalCircuit" module -// -// Illustrates efficient way to exhaustively test -// a combinational circuit - -module CombinationalCircuit_TB; - reg a,b,d,c; - wire y; - - // Instantiate the device-under-test - CombinationalCircuit DUT ( - .a(a), - .b(b), - .c(c), - .d(d), - .y(y) - ); - - // Declare loop index variable - integer k; - - // Apply input stimulus - initial begin - {a,b,c,d} = 0; - - for (k=0; k<=16; k=k+1) - #5 {a,b,c,d} = k; - - #20 $finish; - end - -endmodule +// Testbench for "CombinationalCircuit" module +// +// Illustrates efficient way to exhaustively test +// a combinational circuit + +module CombinationalCircuit_TB; + reg a,b,d,c; + wire y; + + // Instantiate the device-under-test + CombinationalCircuit DUT ( + .a(a), + .b(b), + .c(c), + .d(d), + .y(y) + ); + + // Declare loop index variable + integer k; + + // Apply input stimulus + initial begin + {a,b,c,d} = 0; + + for (k=0; k<=16; k=k+1) + #5 {a,b,c,d} = k; + + #20 $finish; + end + +endmodule diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/css/jquery-ui.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/css/jquery-ui.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/css/my.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/css/my.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp4_graph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp4_graph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp8.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp8.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp8_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/exp8_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/js/jquery-ui.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/js/jquery-ui.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/js/jquery.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/js/jquery.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/css/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/AUTHORS.txt b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/AUTHORS.txt old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/GPL-LICENSE.txt b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/GPL-LICENSE.txt old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/MIT-LICENSE.txt b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/MIT-LICENSE.txt old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/collapsible.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/collapsible.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/custom-icons.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/custom-icons.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/fillspace.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/fillspace.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/hoverintent.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/hoverintent.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/mouseover.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/mouseover.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/no-auto-height.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/no-auto-height.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/sortable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/accordion/sortable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/addClass/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/addClass/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/addClass/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/addClass/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/animate/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/animate/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/animate/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/animate/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/categories.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/categories.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/combobox.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/combobox.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/custom-data.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/custom-data.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/folding.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/folding.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/jquery_32x32.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/jquery_32x32.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/jqueryui_32x32.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/jqueryui_32x32.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/sizzlejs_32x32.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/sizzlejs_32x32.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/transparent_1x1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/transparent_1x1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/ui-anim_basic_16x16.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/images/ui-anim_basic_16x16.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/london.xml b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/london.xml old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/maxheight.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/maxheight.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/multiple-remote.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/multiple-remote.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/multiple.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/multiple.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote-jsonp.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote-jsonp.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote-with-cache.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote-with-cache.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/remote.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/search.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/search.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/xml.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/autocomplete/xml.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/checkbox.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/checkbox.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/icons.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/icons.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/radio.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/radio.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/splitbutton.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/splitbutton.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/toolbar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/button/toolbar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/alt-field.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/alt-field.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/animation.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/animation.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/buttonbar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/buttonbar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/date-formats.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/date-formats.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/dropdown-month-year.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/dropdown-month-year.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/event-search.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/event-search.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/icon-trigger.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/icon-trigger.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/images/calendar.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/images/calendar.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/inline.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/inline.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/localization.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/localization.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/min-max.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/min-max.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/multiple-calendars.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/multiple-calendars.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/other-months.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/other-months.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/show-week.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/datepicker/show-week.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/demos.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/animated.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/animated.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-confirmation.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-confirmation.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-form.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-form.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-message.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal-message.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/dialog/modal.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/constrain-movement.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/constrain-movement.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/cursor-style.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/cursor-style.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/delay-start.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/delay-start.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/events.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/events.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/handle.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/handle.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/revert.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/revert.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/scroll.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/scroll.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/snap-to.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/snap-to.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/sortable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/sortable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/visual-feedback.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/draggable/visual-feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/accepted-elements.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/accepted-elements.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras2.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras2_min.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras2_min.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras3.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras3_min.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras3_min.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras4.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras4_min.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras4_min.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras_min.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/images/high_tatras_min.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/photo-manager.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/photo-manager.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/propagation.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/propagation.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/revert.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/revert.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/shopping-cart.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/shopping-cart.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/visual-feedback.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/droppable/visual-feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/easing.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/easing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/effect/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/hide/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/hide/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/hide/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/hide/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/calendar.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/calendar.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-config-on-tile.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-config-on-tile.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-config-on.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-config-on.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-spindown-closed.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-spindown-closed.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-spindown-open.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/demo-spindown-open.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/icon-docs-info.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/icon-docs-info.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/pbar-ani.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/images/pbar-ani.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/cycler.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/cycler.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/earth.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/earth.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/flight.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/flight.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/rocket.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/images/rocket.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/position/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/animated.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/animated.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/images/pbar-ani.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/images/pbar-ani.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/resize.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/progressbar/resize.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/removeClass/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/removeClass/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/removeClass/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/removeClass/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/animate.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/animate.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/aspect-ratio.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/aspect-ratio.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/constrain-area.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/constrain-area.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/delay-start.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/delay-start.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/helper.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/helper.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/max-min.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/max-min.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/snap-to-grid.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/snap-to-grid.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/synchronous-resize.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/synchronous-resize.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/textarea.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/textarea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/visual-feedback.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/resizable/visual-feedback.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/display-grid.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/display-grid.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/serialize.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/selectable/serialize.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/show/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/show/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/show/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/show/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/colorpicker.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/colorpicker.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/hotelrooms.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/hotelrooms.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/multiple-vertical.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/multiple-vertical.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/range-vertical.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/range-vertical.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/range.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/range.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/rangemax.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/rangemax.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/rangemin.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/rangemin.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/side-scroll.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/side-scroll.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/slider-vertical.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/slider-vertical.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/steps.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/steps.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/tabs.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/slider/tabs.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/connect-lists-through-tabs.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/connect-lists-through-tabs.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/connect-lists.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/connect-lists.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/delay-start.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/delay-start.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/display-grid.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/display-grid.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/empty-lists.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/empty-lists.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/items.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/items.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/placeholder.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/placeholder.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/portlets.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/sortable/portlets.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/switchClass/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/switchClass/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/switchClass/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/switchClass/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content2.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content2.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content3-slow.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content3-slow.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content4-broken.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/ajax/content4-broken.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/bottom.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/bottom.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/collapsible.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/collapsible.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/cookie.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/cookie.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/manipulation.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/manipulation.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/mouseover.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/mouseover.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/sortable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/sortable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/vertical.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/tabs/vertical.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggle/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggle/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggle/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggle/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggleClass/default.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggleClass/default.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggleClass/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/demos/toggleClass/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/accordion.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/accordion.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/addClass.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/addClass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/animate.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/animate.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/autocomplete.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/autocomplete.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/button.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/button.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/datepicker.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/datepicker.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/dialog.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/dialog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/draggable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/draggable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/droppable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/droppable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/effect.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/effect.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/hide.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/hide.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/position.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/position.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/progressbar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/progressbar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/removeClass.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/removeClass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/resizable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/resizable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/selectable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/selectable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/show.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/show.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/slider.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/slider.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/sortable.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/sortable.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/switchClass.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/switchClass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/tabs.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/tabs.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/toggle.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/toggle.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/toggleClass.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/docs/toggleClass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.bgiframe-2.1.1.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.bgiframe-2.1.1.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.cookie.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.cookie.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.metadata.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/jquery.metadata.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/qunit.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/qunit.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/qunit.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/external/qunit.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/jquery-1.4.2.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/jquery-1.4.2.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery-ui-i18n.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery-ui-i18n.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-af.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-af.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ar.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-az.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-az.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-bg.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-bs.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ca.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-cs.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-da.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-da.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-de.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-de.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-el.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-el.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-en-GB.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-eo.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-es.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-es.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-et.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-et.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-eu.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fa.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fi.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fo.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fr-CH.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-fr.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-he.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-he.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hr.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hu.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-hy.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-id.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-id.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-is.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-is.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-it.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-it.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ja.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ko.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-kz.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-kz.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-lt.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-lv.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ms.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-nl.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-no.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-no.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-pl.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ro.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ru.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sk.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sl.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sq.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sr-SR.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sr.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-sv.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-ta.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-th.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-th.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-tr.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-uk.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-vi.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-CN.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-HK.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/i18n/jquery.ui.datepicker-zh-TW.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery-ui-1.8.5.custom.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery-ui-1.8.5.custom.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.blind.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.blind.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.bounce.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.bounce.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.clip.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.clip.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.core.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.core.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.drop.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.drop.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.explode.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.explode.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.fade.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.fade.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.fold.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.fold.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.highlight.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.highlight.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.pulsate.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.pulsate.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.scale.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.scale.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.shake.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.shake.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.slide.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.slide.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.transfer.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.effects.transfer.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.accordion.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.accordion.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.autocomplete.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.autocomplete.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.button.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.button.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.core.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.core.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.datepicker.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.datepicker.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.dialog.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.dialog.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.draggable.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.draggable.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.droppable.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.droppable.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.mouse.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.mouse.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.position.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.position.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.progressbar.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.progressbar.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.resizable.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.resizable.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.selectable.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.selectable.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.slider.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.slider.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.sortable.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.sortable.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.tabs.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.tabs.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.widget.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/jquery.ui.widget.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.blind.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.blind.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.bounce.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.bounce.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.clip.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.clip.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.core.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.core.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.drop.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.drop.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.explode.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.explode.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.fade.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.fade.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.fold.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.fold.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.highlight.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.highlight.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.pulsate.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.pulsate.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.scale.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.scale.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.shake.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.shake.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.slide.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.slide.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.transfer.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.effects.transfer.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.accordion.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.accordion.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.autocomplete.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.autocomplete.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.button.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.button.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.core.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.core.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.datepicker.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.datepicker.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.dialog.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.dialog.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.draggable.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.draggable.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.droppable.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.droppable.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.mouse.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.mouse.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.position.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.position.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.progressbar.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.progressbar.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.resizable.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.resizable.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.selectable.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.selectable.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.slider.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.slider.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.sortable.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.sortable.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.tabs.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.tabs.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.widget.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/ui/minified/jquery.ui.widget.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/version.txt b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/development-bundle/version.txt old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/index.html old mode 100755 new mode 100644 index 3704330c..3a0e155f --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/index.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/index.html @@ -1,367 +1,367 @@ - - - - - jQuery UI Example Page - - - - - - - -

    Welcome to jQuery UI!

    -

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    -

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    - -

    YOUR COMPONENTS:

    - - -

    Accordion

    -
    -
    -

    First

    -
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    -
    -
    -

    Second

    -
    Phasellus mattis tincidunt nibh.
    -
    -
    -

    Third

    -
    Nam dui erat, auctor a, dignissim quis.
    -
    -
    - - -

    Tabs

    -
    - -
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    -
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    -
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    -
    - - -

    Dialog

    -

    Open Dialog

    - - -

    Overlay and Shadow Classes (not currently used in UI widgets)

    -
    -

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    - - -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    -
    - -
    - - - -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    - - - -

    Framework Icons (content color preview)

    -
      - -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    - - - -

    Slider

    -
    - - -

    Datepicker

    -
    - - -

    Progressbar

    -
    - - -

    Highlight / Error

    -
    -
    -

    - Hey! Sample ui-state-highlight style.

    -
    -
    -
    -
    -
    -

    - Alert: Sample ui-state-error style.

    -
    -
    - - - - - + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/js/jquery-1.4.2.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/js/jquery-1.4.2.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/demos.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp8/junk/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/and.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/and.v index ad12ceb0..67d45f74 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/and.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/and.v @@ -1,10 +1,10 @@ -/* A simple AND gate -File: and.v */ - -module andgate (a, b, y); -input a, b; -output y; - -assign y = a & b; - +/* A simple AND gate +File: and.v */ + +module andgate (a, b, y); +input a, b; +output y; + +assign y = a & b; + endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp.v index 9a9fb527..17661477 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp.v @@ -5,16 +5,16 @@ output q; reg q; -//always @ ( posedge clk ) +//always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; -//end -always @ (posedge clk ) -if (~r) begin -q <= 1'b0; -end else begin +//end +always @ (posedge clk ) +if (~r) begin +q <= 1'b0; +end else begin q <= d; end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp_tb.v index c497f817..4bbb8b9a 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/dffp_tb.v @@ -6,19 +6,19 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/ff_p_complete.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/ff_p_complete.v index a0d228db..ebd3e89e 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/ff_p_complete.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/ff_p_complete.v @@ -6,16 +6,16 @@ module dff(q,clk,d,r); reg q; - //always @ ( posedge clk ) + //always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; - //end - always @ (posedge clk ) - if (~r) begin - q <= 1'b0; - end else begin + //end + always @ (posedge clk ) + if (~r) begin + q <= 1'b0; + end else begin q <= d; end endmodule @@ -27,18 +27,18 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux.v index 176f2550..1a13b94a 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux.v @@ -4,7 +4,7 @@ module mux( s1, s0, d3, d2, d1, d0, q ); input s1,s0; input d3,d2,d1,d0; output q; - + reg q; always @( s1 or s0 or d3 or d2 or d1 or d0) diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux2_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux2_tb.v index 643676d1..aaa38ac4 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux2_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux2_tb.v @@ -5,7 +5,7 @@ module mux2_tb; mux2 mux2(s, d1, d0, q ); initial begin - + #3 d1=1'b0; d0=1'b1; s=1'b0; #5 d1=1'b0;d0=1'b0; s=1'b1; #3 d1=1'b0; d0=1'b1; s=1'b1; #5 d1=1'b0;d0=1'b0; s=1'b0; end diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux_tb.v index ee081a0a..df1bf0f6 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/EXTRA_Verilog_Code/mux_tb.v @@ -14,7 +14,7 @@ module mux_tb; // initial // $monitor(d3,d2,d1,d0,s1,s0,q); //endmodule - -always @( s1 or s0 or d3 or d2 or d1 or d0) -#1 $display("t=%t",$time," s=%b",s1,s0," q=%b",q," d=%b%b%b%b",d3,d2,d1,d0); + +always @( s1 or s0 or d3 or d2 or d1 or d0) +#1 $display("t=%t",$time," s=%b",s1,s0," q=%b",q," d=%b%b%b%b",d3,d2,d1,d0); endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.v index 689fe1fd..4a022a26 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.v @@ -1,11 +1,11 @@ -`timescale 1ns/1ns -module dffn(q,clk,d); -input d, clk; -output q; -reg q; - -always @ (negedge clk ) -begin -q <= d; -end +`timescale 1ns/1ns +module dffn(q,clk,d); +input d, clk; +output q; +reg q; + +always @ (negedge clk ) +begin +q <= d; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.vcd index b00eb9e9..47c6c075 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn.vcd @@ -1,41 +1,41 @@ -$date - Sat Jun 25 16:49:02 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -1! -0" -#10 -1" -0# -#15 -0! -0" -#20 -1" -1# -#25 -1! -0" +$date + Sat Jun 25 16:49:02 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +1! +0" +#10 +1" +0# +#15 +0! +0" +#20 +1" +1# +#25 +1! +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn1.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn1.vcd index 61ffe86c..c7b8ab0f 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn1.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn1.vcd @@ -1,53 +1,53 @@ -$date - Sat Jun 25 16:58:57 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1" -#15 -0" -#20 -1" -1# -#25 -1! -0" -#30 -0# -#35 -1" -#40 -0! -0" -#45 -1" -1# -#50 -1! -0" +$date + Sat Jun 25 16:58:57 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1" +#15 +0" +#20 +1" +1# +#25 +1! +0" +#30 +0# +#35 +1" +#40 +0! +0" +#45 +1" +1# +#50 +1! +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn2.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn2.vcd index 14764cbe..02857116 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn2.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn2.vcd @@ -1,52 +1,52 @@ -$date - Sat Jun 25 17:03:08 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1# -#15 -0# -#20 -1" -1# -#25 -1! -0" -#30 -1" -0# -#40 -0" -1# -#45 -1" -#50 -0! -0" -0# +$date + Sat Jun 25 17:03:08 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1# +#15 +0# +#20 +1" +1# +#25 +1! +0" +#30 +1" +0# +#40 +0" +1# +#45 +1" +#50 +0! +0" +0# diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn3.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn3.vcd index a0aed95a..e55e93aa 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn3.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn3.vcd @@ -1,66 +1,66 @@ -$date - Sat Jun 25 17:07:17 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn3_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#10 -1" -#15 -0" -#20 -1" -1# -#25 -1! -0" -#30 -1" -#35 -0! -0" -0# -#40 -1" -#45 -0" -#50 -1" -1# -#55 -1! -0" -#60 -1" -#65 -0! -0" -0# -#70 -1" -#75 -0" +$date + Sat Jun 25 17:07:17 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn3_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#10 +1" +#15 +0" +#20 +1" +1# +#25 +1! +0" +#30 +1" +#35 +0! +0" +0# +#40 +1" +#45 +0" +#50 +1" +1# +#55 +1! +0" +#60 +1" +#65 +0! +0" +0# +#70 +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn4.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn4.vcd index b369e1c0..653c83ff 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn4.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn4.vcd @@ -1,42 +1,42 @@ -$date - Sat Jun 25 17:10:08 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffn4_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffn $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -x! -$end -#5 -0! -0" -0# -#20 -1" -1# -#35 -0" -0# -#50 -1" -1# -#65 -0" -0# +$date + Sat Jun 25 17:10:08 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffn4_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffn $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +x! +$end +#5 +0! +0" +0# +#20 +1" +1# +#35 +0" +0# +#50 +1" +1# +#65 +0" +0# diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb.v index 6fc36dc4..8a5a06e7 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb.v @@ -1,25 +1,25 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb1.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb1.v index c3578072..e89be857 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb1.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb1.v @@ -1,31 +1,31 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn1.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn1.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb2.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb2.v index 42f9331f..a7bb4423 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb2.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb2.v @@ -1,31 +1,31 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn2.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn2.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb3.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb3.v index 3b1d2aa2..5088fd2e 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb3.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb3.v @@ -1,37 +1,37 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn3_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn3.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn3_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn3.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb4.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb4.v index 85f24497..c02e2c65 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb4.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffn/dffn_tb4.v @@ -1,37 +1,37 @@ -`include "dffn.v" -`timescale 1ns/1ns -module dffn4_tb; - wire q; - reg d,clk; - dffn dffn(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffn4.vcd"); - $dumpvars; -end -endmodule +`include "dffn.v" +`timescale 1ns/1ns +module dffn4_tb; + wire q; + reg d,clk; + dffn dffn(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffn4.vcd"); + $dumpvars; +end +endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp.v index 2cc2507e..446efc00 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp.v @@ -1,11 +1,11 @@ -`timescale 1ns/1ns -module dffp(q,clk,d); -input d, clk; -output q; -reg q; - -always @ (posedge clk ) -begin -q <= d; -end -endmodule +`timescale 1ns/1ns +module dffp(q,clk,d); +input d, clk; +output q; +reg q; + +always @ (posedge clk ) +begin +q <= d; +end +endmodule diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp1.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp1.vcd index 9c82a98b..9b1fd528 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp1.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp1.vcd @@ -1,53 +1,53 @@ -$date - Sat Jun 25 17:16:45 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp1_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -1! -$end -#5 -0" -0# -#10 -0! -1" -#15 -0" -#20 -1! -1" -1# -#25 -0" -#30 -0# -#35 -0! -1" -#40 -0" -#45 -1! -1" -1# -#50 -0" +$date + Sat Jun 25 17:16:45 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp1_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +1! +$end +#5 +0" +0# +#10 +0! +1" +#15 +0" +#20 +1! +1" +1# +#25 +0" +#30 +0# +#35 +0! +1" +#40 +0" +#45 +1! +1" +1# +#50 +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp2.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp2.vcd index 199f1f9a..ab88cc9e 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp2.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp2.vcd @@ -1,65 +1,65 @@ -$date - Sat Jun 25 17:25:13 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp2_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -1" -1! -$end -#5 -0" -0# -#10 -0! -1" -#15 -0" -1# -#20 -1! -1" -#25 -0" -#30 -0# -#35 -1" -1# -#40 -0" -0# -#45 -1" -1# -#50 -0" -0# -#60 -1" -1# -#65 -0" -0# -#70 -1" -1# -#75 -0" +$date + Sat Jun 25 17:25:13 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp2_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +1" +1! +$end +#5 +0" +0# +#10 +0! +1" +#15 +0" +1# +#20 +1! +1" +#25 +0" +#30 +0# +#35 +1" +1# +#40 +0" +0# +#45 +1" +1# +#50 +0" +0# +#60 +1" +1# +#65 +0" +0# +#70 +1" +1# +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp3.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp3.vcd index 3fc78629..7c7074f3 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp3.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp3.vcd @@ -1,60 +1,60 @@ -$date - Sat Jun 25 17:25:47 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp3_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#5 -0! -1" -0# -#15 -0" -1# -#20 -1! -1" -#25 -0" -0# -#35 -1# -#40 -1" -#45 -0# -#50 -0" -#55 -1# -#60 -1" -#65 -0" -0# -#70 -0! -1" -#75 -0" -1# +$date + Sat Jun 25 17:25:47 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp3_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#5 +0! +1" +0# +#15 +0" +1# +#20 +1! +1" +#25 +0" +0# +#35 +1# +#40 +1" +#45 +0# +#50 +0" +#55 +1# +#60 +1" +#65 +0" +0# +#70 +0! +1" +#75 +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp4.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp4.vcd index aeca40ca..a38c66b1 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp4.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp4.vcd @@ -1,52 +1,52 @@ -$date - Sat Jun 25 17:26:20 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp4_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#5 -1! -1" -#15 -0" -#20 -1" -#25 -0" -0# -#40 -0! -1" -#50 -0" -#55 -1# -#60 -1! -1" -#65 -0" -#70 -1" -#75 -0" +$date + Sat Jun 25 17:26:20 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp4_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#5 +1! +1" +#15 +0" +#20 +1" +#25 +0" +0# +#40 +0! +1" +#50 +0" +#55 +1# +#60 +1! +1" +#65 +0" +#70 +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp5.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp5.vcd index 19ee0d8c..78df187d 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp5.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp5.vcd @@ -1,43 +1,43 @@ -$date - Sat Jun 25 17:26:50 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module dffp5_tb $end -$var wire 1 ! q $end -$var reg 1 " clk $end -$var reg 1 # d $end -$scope module dffp $end -$var wire 1 " clk $end -$var wire 1 # d $end -$var reg 1 ! q $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -1# -0" -x! -$end -#10 -1! -1" -#25 -0" -0# -#40 -0! -1" -#55 -0" -1# -#70 -1! -1" -#75 -0" +$date + Sat Jun 25 17:26:50 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module dffp5_tb $end +$var wire 1 ! q $end +$var reg 1 " clk $end +$var reg 1 # d $end +$scope module dffp $end +$var wire 1 " clk $end +$var wire 1 # d $end +$var reg 1 ! q $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +1# +0" +x! +$end +#10 +1! +1" +#25 +0" +0# +#40 +0! +1" +#55 +0" +1# +#70 +1! +1" +#75 +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb1.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb1.v index 5a19652f..98039dc3 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb1.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb1.v @@ -1,31 +1,31 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp1_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp1.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp1_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp1.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb2.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb2.v index e219ee04..3ab3bc4f 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb2.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb2.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp2_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp2.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp2_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp2.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb3.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb3.v index 7424440b..fe911a97 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb3.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb3.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp3_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp3.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp3_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp3.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb4.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb4.v index 5bb14ee0..d3ec1994 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb4.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb4.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp4_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b0; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp4.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp4_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b0; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp4.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb5.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb5.v index 4292b558..1fba97a4 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb5.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/dffp/dffp_tb5.v @@ -1,37 +1,37 @@ -`include "dffp.v" -`timescale 1ns/1ns -module dffp5_tb; - wire q; - reg d,clk; - dffp dffp(q, clk, d ); - initial - begin - $monitor(q, d, clk); - #0 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b1; - #5 d=1'b0;clk=1'b0; - - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b0; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b0;clk=1'b1; - #5 d=1'b1;clk=1'b0; - - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b0; - #5 d=1'b1;clk=1'b1; - #5 d=1'b1;clk=1'b0; - end - always @( d or clk) -#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); - -initial begin - $dumpfile ("dffp5.vcd"); - $dumpvars; -end -endmodule - +`include "dffp.v" +`timescale 1ns/1ns +module dffp5_tb; + wire q; + reg d,clk; + dffp dffp(q, clk, d ); + initial + begin + $monitor(q, d, clk); + #0 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b1; + #5 d=1'b0;clk=1'b0; + + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b0; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b0;clk=1'b1; + #5 d=1'b1;clk=1'b0; + + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b0; + #5 d=1'b1;clk=1'b1; + #5 d=1'b1;clk=1'b0; + end + always @( d or clk) +#1 $display("t=%t",$time," d=%b",d," clk=%b",clk); + +initial begin + $dumpfile ("dffp5.vcd"); + $dumpvars; +end +endmodule + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.v index 8a204784..27e66829 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.v @@ -1,14 +1,14 @@ -`timescale 1ns/1ns -module mux2( clk, In1, In2, Out ); - -input clk,In1,In2; -output Out; - -reg Out; - -always @( clk or In2 or In1) -begin - Out = ( ~clk & In1 ) | ( clk & In2 ); -end - +`timescale 1ns/1ns +module mux2( clk, In1, In2, Out ); + +input clk,In1,In2; +output Out; + +reg Out; + +always @( clk or In2 or In1) +begin + Out = ( ~clk & In1 ) | ( clk & In2 ); +end + endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.vcd index 44793558..38a6bc91 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2.vcd @@ -1,43 +1,43 @@ -$date - Sat Jun 25 17:52:37 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -0! -1$ -0" -#11 -1" -#16 -0$ -0" +$date + Sat Jun 25 17:52:37 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +0! +1$ +0" +#11 +1" +#16 +0$ +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_1.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_1.vcd index c67cede7..ab8d2387 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_1.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_1.vcd @@ -1,72 +1,72 @@ -$date - Sat Jun 25 18:03:01 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb1 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -1$ -0" -1# -#11 -0$ -1" -#16 -0! -0" -0# -#19 -1! -1" -#24 -1$ -0" -1# -#27 -1" -#32 -0! -0" -0# -#35 -1! -0$ -1" -#40 -1$ -0" -1# -#43 -1" -#48 -0! -0$ -0" +$date + Sat Jun 25 18:03:01 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb1 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +1$ +0" +1# +#11 +0$ +1" +#16 +0! +0" +0# +#19 +1! +1" +#24 +1$ +0" +1# +#27 +1" +#32 +0! +0" +0# +#35 +1! +0$ +1" +#40 +1$ +0" +1# +#43 +1" +#48 +0! +0$ +0" diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_2.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_2.vcd index 3f165115..20145d66 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_2.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_2.vcd @@ -1,67 +1,67 @@ -$date - Sat Jun 25 18:03:51 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb2 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -1$ -1# -#11 -0! -0# -#16 -0$ -0" -#24 -1! -1$ -1# -#27 -0$ -1" -#32 -0! -1$ -0# -#35 -0$ -0" -#40 -1# -#43 -1$ -1" -0# -#48 -0$ -0" -1# +$date + Sat Jun 25 18:03:51 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb2 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +1$ +1# +#11 +0! +0# +#16 +0$ +0" +#24 +1! +1$ +1# +#27 +0$ +1" +#32 +0! +1$ +0# +#35 +0$ +0" +#40 +1# +#43 +1$ +1" +0# +#48 +0$ +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_3.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_3.vcd index 51b70d9d..ab4fb0ba 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_3.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_3.vcd @@ -1,71 +1,71 @@ -$date - Sat Jun 25 18:04:23 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb3 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -0! -0$ -0" -0# -#8 -1! -1" -1# -#11 -0! -1$ -0# -#16 -0$ -0" -1# -#19 -0# -#24 -1! -1$ -1" -1# -#32 -0! -0" -0# -#35 -0$ -#40 -1! -1" -1# -#43 -0! -1$ -0# -#48 -0$ -0" -1# +$date + Sat Jun 25 18:04:23 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb3 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +0! +0$ +0" +0# +#8 +1! +1" +1# +#11 +0! +1$ +0# +#16 +0$ +0" +1# +#19 +0# +#24 +1! +1$ +1" +1# +#32 +0! +0" +0# +#35 +0$ +#40 +1! +1" +1# +#43 +0! +1$ +0# +#48 +0$ +0" +1# diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_4.vcd b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_4.vcd index 242a8553..cc13f19e 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_4.vcd +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_4.vcd @@ -1,66 +1,66 @@ -$date - Sat Jun 25 18:05:16 2011 -$end -$version - Icarus Verilog -$end -$timescale - 1ns -$end -$scope module mux2_tb4 $end -$var wire 1 ! Out $end -$var reg 1 " In1 $end -$var reg 1 # In2 $end -$var reg 1 $ clk $end -$scope module mux2 $end -$var wire 1 " In1 $end -$var wire 1 # In2 $end -$var wire 1 $ clk $end -$var reg 1 ! Out $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -x$ -x# -x" -x! -$end -#3 -1! -0$ -1" -0# -#8 -0! -1$ -#11 -0" -#16 -0$ -1# -#19 -1! -1" -#24 -1$ -#27 -0" -#32 -0! -0$ -0# -#35 -1! -1" -#40 -0! -1$ -#43 -1! -0" -1# -#48 -0! -0$ +$date + Sat Jun 25 18:05:16 2011 +$end +$version + Icarus Verilog +$end +$timescale + 1ns +$end +$scope module mux2_tb4 $end +$var wire 1 ! Out $end +$var reg 1 " In1 $end +$var reg 1 # In2 $end +$var reg 1 $ clk $end +$scope module mux2 $end +$var wire 1 " In1 $end +$var wire 1 # In2 $end +$var wire 1 $ clk $end +$var reg 1 ! Out $end +$upscope $end +$upscope $end +$enddefinitions $end +#0 +$dumpvars +x$ +x# +x" +x! +$end +#3 +1! +0$ +1" +0# +#8 +0! +1$ +#11 +0" +#16 +0$ +1# +#19 +1! +1" +#24 +1$ +#27 +0" +#32 +0! +0$ +0# +#35 +1! +1" +#40 +0! +1$ +#43 +1! +0" +1# +#48 +0! +0$ diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb.v index aff66150..e7110dbb 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb.v @@ -1,24 +1,24 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb1.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb1.v index 49b262cb..06f8c85a 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb1.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb1.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb1; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_1.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb1; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_1.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb2.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb2.v index b4063ae1..4a9e5a79 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb2.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb2.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb2; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_2.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb2; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_2.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb3.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb3.v index 2f31425d..b32dfa50 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb3.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb3.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb3; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b1; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b1; - - #3 In2=1'b0;In1=1'b0; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b0; - #3 In2=1'b0;In1=1'b1; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_3.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb3; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b1; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b1; + + #3 In2=1'b0;In1=1'b0; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b0; + #3 In2=1'b0;In1=1'b1; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_3.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb4.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb4.v index c5f7b157..f69aa204 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb4.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/codes/mux2/mux2_tb4.v @@ -1,34 +1,34 @@ -`timescale 1ns/1ns -`include "mux2.v" -module mux2_tb4; - wire Out; - reg In1,In2,clk; - mux2 mux2(clk, In1, In2, Out ); - initial - begin - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - #3 In2=1'b0;In1=1'b0; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - #3 In2=1'b1;In1=1'b1; clk=1'b0; - #5 In2=1'b1;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b0; clk=1'b1; - #5 In2=1'b0;In1=1'b0; clk=1'b0; - - #3 In2=1'b0;In1=1'b1; clk=1'b0; - #5 In2=1'b0;In1=1'b1; clk=1'b1; - #3 In2=1'b1;In1=1'b0; clk=1'b1; - #5 In2=1'b1;In1=1'b0; clk=1'b0; - - end - -always @( clk or In1 or In2) -#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); - -initial begin - $dumpfile ("mux2_4.vcd"); - $dumpvars; -end +`timescale 1ns/1ns +`include "mux2.v" +module mux2_tb4; + wire Out; + reg In1,In2,clk; + mux2 mux2(clk, In1, In2, Out ); + initial + begin + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + #3 In2=1'b0;In1=1'b0; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + #3 In2=1'b1;In1=1'b1; clk=1'b0; + #5 In2=1'b1;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b0; clk=1'b1; + #5 In2=1'b0;In1=1'b0; clk=1'b0; + + #3 In2=1'b0;In1=1'b1; clk=1'b0; + #5 In2=1'b0;In1=1'b1; clk=1'b1; + #3 In2=1'b1;In1=1'b0; clk=1'b1; + #5 In2=1'b1;In1=1'b0; clk=1'b0; + + end + +always @( clk or In1 or In2) +#1 $display("t=%t",$time," clk=%b",clk," Out=%b",Out," In=%b%b",In2,In1); + +initial begin + $dumpfile ("mux2_4.vcd"); + $dumpvars; +end endmodule \ No newline at end of file diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_flipflop_positive_verilog_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/exp9_flipflop_negative_verilog_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/exp9_negative/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/ff_p_complete.v b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/ff_p_complete.v index a0d228db..ebd3e89e 100644 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/ff_p_complete.v +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/ff_p_complete.v @@ -6,16 +6,16 @@ module dff(q,clk,d,r); reg q; - //always @ ( posedge clk ) + //always @ ( posedge clk ) //if (~r) begin //q <= 1'b0; //end else begin //q <= d; - //end - always @ (posedge clk ) - if (~r) begin - q <= 1'b0; - end else begin + //end + always @ (posedge clk ) + if (~r) begin + q <= 1'b0; + end else begin q <= d; end endmodule @@ -27,18 +27,18 @@ module dff_tb; initial begin $monitor(q, d, clk, r,); -// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; - // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - #3 d=1'b1;clk=1'b0;r=1'b1; - #5 d=1'b1;clk=1'b1;r=1'b1; - #3 d=1'b0;clk=1'b0;r=1'b1; +// #3 d=1'b0; clk=1'b0; #5 d=1'b0; clk=1'b1; #3 d=1'b0; clk=1'b1; #5 d=1'b0; clk=1'b0; + // #3 d=1'b0; #2 d=1'b1; #3 d=1'b0; #2 d=1'b1;#2 clk=1'b0; #2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + #3 d=1'b1;clk=1'b0;r=1'b1; + #5 d=1'b1;clk=1'b1;r=1'b1; + #3 d=1'b0;clk=1'b0;r=1'b1; #3 d=1'b0;clk=1'b1;r=1'b1; #5 d=1'b1;clk=1'b0;r=1'b1; #3 d=1'b1;clk=1'b1;r=1'b1; - //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; - //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; - //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; - end + //#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0;#3 d=1'b1;#3 d=1'b0; + //#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1;#2 clk=1'b0;#2 clk=1'b1; + //#5 r=1'b1;#5 r=1'b0;#5 r=1'b1;#5 r=1'b0;#5 r=1'b1; + end always @( d or clk or r) #1 $display("t=%t",$time," d=%b",d," clk=%b",clk," r=%b",r); -endmodule +endmodule diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/exp9/images1/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/index1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/index1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_15Aug2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/about.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/body.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/home.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/title.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/about.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/body.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/home.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/title.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/inv22.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/VLSI_VLab/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/anushabackup.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/anushabackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_rightpanel.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_rightpanel.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_toolbar.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/backup_toolbar.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/before_draw.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/before_draw.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/buttonbackup.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/buttonbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/cgi-bin b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/cgi-bin old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$Hello.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$Hello.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$2.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$2.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$3.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$3.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$4.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$4.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$5.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$6.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$6.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$7.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$7.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$8.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$8.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$9.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$9.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/hist b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/hist old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/inv22.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/mouse_backup.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/mouse_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/newbackup.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/newbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/ref.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/ref.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/temp_backup.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_25June2011/temp_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/exp1.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/exp1.java b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/index.html b/src/lab/final-build/EXP_1sep2010_old_20Sep2011/layout_28Aug2011/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.html old mode 100755 new mode 100644 index b39ca1c7..4d73c124 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.html +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.html @@ -1,15 +1,15 @@ - - - -

    - - - - - - - -
    - - - + + + +
    + + + + + + + +
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.swf b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/exp1.swf old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/index.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/layout.swf b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/layout.swf old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/shashank exp1.js b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/shashank exp1.js old mode 100755 new mode 100644 index 36f9009a..4cd18d7f --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/shashank exp1.js +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/Manual_exp1/shashank exp1.js @@ -1,3 +1,3 @@ -obj=document.getElementsByTagName('object'); -for (var i=0; i - - - - jQuery UI Example Page - - - - - - - -

    Welcome to jQuery UI!

    -

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    -

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    - -

    YOUR COMPONENTS:

    - - -

    Accordion

    -
    -
    -

    First

    -
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    -
    -
    -

    Second

    -
    Phasellus mattis tincidunt nibh.
    -
    -
    -

    Third

    -
    Nam dui erat, auctor a, dignissim quis.
    -
    -
    - - -

    Tabs

    -
    - -
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    -
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    -
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    -
    - - -

    Dialog

    -

    Open Dialog

    - - -

    Overlay and Shadow Classes (not currently used in UI widgets)

    -
    -

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    - - -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    -
    - -
    - - - -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    -
    - - - -

    Framework Icons (content color preview)

    -
      - -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • - -
    • -
    • -
    • -
    • -
    • -
    - - - -

    Slider

    -
    - - -

    Datepicker

    -
    - - -

    Progressbar

    -
    - - -

    Highlight / Error

    -
    -
    -

    - Hey! Sample ui-state-highlight style.

    -
    -
    -
    -
    -
    -

    - Alert: Sample ui-state-error style.

    -
    -
    - - - - - + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.5.custom.min.js), and css/ui-lightness/jquery-ui-1.8.5.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/JQuery/js/jquery-1.4.2.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/JQuery/js/jquery-ui-1.8.5.custom.min.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_flat_75_ffffff_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_75_dadada_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_2e83ff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_454545_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_454545_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_888888_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_888888_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/images/ui-icons_cd0a0a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/base/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/demos.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/demos.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_222222_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_228ef1_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/images/ui-icons_ffffff_256x240.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery-ui-1.8.5.custom.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.accordion.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.all.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.all.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.autocomplete.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.base.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.base.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.button.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.button.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.core.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.core.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.datepicker.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.dialog.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.progressbar.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.resizable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.selectable.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.slider.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.slider.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.tabs.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.theme.css b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/junk/themes/ui-lightness/jquery.ui.theme.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/report.txt b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/report.txt old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_13Nov2010_exp4.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_13Nov2010_exp4.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_13Nov2010_exp4_graph.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_13Nov2010_exp4_graph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_exp4_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp4/version1_exp4_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp3_xnor_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp3_xnor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp3_xor_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp3_xor_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Multiplexer_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Multiplexer_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Multiplexer_simulate.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Multiplexer_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Pass_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Pass_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Pass_simulate.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_Pass_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_mux.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_pass.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/exp5_pass.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/inv5_mux.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/inv5_mux.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/inv5_pass.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/inv5_pass.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/invi_mux.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/invi_mux.sp old mode 100755 new mode 100644 index 184ed91e..bf32b041 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/invi_mux.sp +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/invi_mux.sp @@ -1,15 +1,15 @@ - *MUX -.include '45nm_HP.pm' -M1 In1 clk out Vdd PMOS l=50n w= 450n -M2 In1 clk1 out 0 NMOS l=50n w=100n -M3 In2 clk1 out Vdd PMOS l=50n w= 450n -M4 In2 clk out 0 NMOS l=50n w=100n -Vdd Vdd 0 1.1 -VIn1 In 0 pulse (0 1.1 0 1n 1n 5n 10n) -VIn2 In 0 pulse (0 1.1 0 1n 1n 10n 20n) -Vclk clk 0 pulse (0 1.1 0 1n 1n 20n 30n) -Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 20n 30n) -.tran 1n 100n -.save V(In1) V(In2) V(clk) V(clk1) -.save V(out) -.end + *MUX +.include '45nm_HP.pm' +M1 In1 clk out Vdd PMOS l=50n w= 450n +M2 In1 clk1 out 0 NMOS l=50n w=100n +M3 In2 clk1 out Vdd PMOS l=50n w= 450n +M4 In2 clk out 0 NMOS l=50n w=100n +Vdd Vdd 0 1.1 +VIn1 In 0 pulse (0 1.1 0 1n 1n 5n 10n) +VIn2 In 0 pulse (0 1.1 0 1n 1n 10n 20n) +Vclk clk 0 pulse (0 1.1 0 1n 1n 20n 30n) +Vclk1 clk1 0 pulse (1.1 0 0 1n 1n 20n 30n) +.tran 1n 100n +.save V(In1) V(In2) V(clk) V(clk1) +.save V(out) +.end diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/outfile_mux b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/outfile_mux old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/outfile_pass b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/outfile_pass old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/pass.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/exp5/pass.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/index1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/index1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/about.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/body.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/home.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/title.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/.spiceinit b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/.spiceinit old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/DC_CHARC.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/DC_CHARC.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/about.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/about.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/arithmetic_logic_unit.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/arithmetic_logic_unit.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/body.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/body.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/d_flip_flop.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/d_flip_flop.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq16.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq16.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq19.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq19.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq8.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/eq8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/finite_state_machine.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/finite_state_machine.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/framea.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/framea.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/framesidebar.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/framesidebar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/home.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/home.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/iiit.jpeg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/iiit.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/image_mapping.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/image_mapping.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/intro_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/intro_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter.html old mode 100755 new mode 100644 index 6f902d45..227d3ea9 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter.html @@ -1,29 +1,29 @@ - - - -

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    -

    -

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    -
    - - - - - - - - - - - - - -
    InputOutput
    01
    10
    -

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    -
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    - - - + + + +

    Inverter is a simple logic gate, with only one input and one output. Its symbol is shown below:-

    +

    +

    Its output is always the opposite of the input,i.e. if the input is 0, the output will be 1, if the input is 1, the output will be 0. The truth table for inverter is shown below:-

    +
    + + + + + + + + + + + + + +
    InputOutput
    01
    10
    +

    The transistor level design of inverter can be made using many logics but the following three logics will be explained in the theory section in detail

    +
    • Complementary CMOS logic
    • Pseudo NMOS logic
    • Clocked CMOS logic
    + + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_frameright.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_frameright.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_sizing.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_sizing.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_symbol.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/inverter_symbol.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/logo.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/logo.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/logo_vlsi.jpg b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/logo_vlsi.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/memory.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/memory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/menu_bar.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/menu_bar.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/multiplexer.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/multiplexer.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/nand_nor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/nand_nor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/newhome.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/newhome.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/not.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/not.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/obj_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/obj_inverter.html old mode 100755 new mode 100644 index 5b0274d9..fe7eca36 --- a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/obj_inverter.html +++ b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/obj_inverter.html @@ -1,7 +1,7 @@ - - -

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    -

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    -

    (c)To find the effect of W/L of transistors on the output waveform. - - + + +

    (a) To design transistor level schematic of an Inverter using

    • Complementary CMOS Logic
    • Pseudo NMOS logic
    • Clocked CMOS logic

    +

    (b)To find the effect of load capacitance on the rise time and fall time and hence delay of output waveform.

    +

    (c)To find the effect of W/L of transistors on the output waveform. + + diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/pass_transistor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/pass_transistor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_fr_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_fr_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter_sidetheory.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/theory_inverter_sidetheory.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/title.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/title.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/xor_xnor.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/VLSI/xor_xnor.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/inv22.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/VLSI_VLab/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/anushabackup.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/anushabackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_10_july.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_10_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_6_Aug.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_6_Aug.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_6_july.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_exp1_6_july.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_rightpanel.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_rightpanel.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_toolbar.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/backup_toolbar.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/before_draw.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/before_draw.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/buttonbackup.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/buttonbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/cgi-bin b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/cgi-bin old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$Hello.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$Hello.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$2.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$2.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$3.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$3.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$4.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$4.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$5.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$5.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$6.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$6.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$7.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$7.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$8.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$8.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$9.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$9.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_fullgraph.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_fullgraph.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_simulate.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/exp1_simulate.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/hist b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/hist old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/backup/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/backup/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/index.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/index.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/inv22.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/inv22.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/mouse_backup.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/mouse_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/my/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/newbackup.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/newbackup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/ref.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/ref.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/45nm_HP.pm b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/45nm_HP.pm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/bsim4.out b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/bsim4.out old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$MyRightPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$MySelected.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$MySelected.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$WorkPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$line.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$line.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$myDialog$WA.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$myDialog.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$myDialog.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$node.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel$node.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1$MyPanel.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1.html b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_graph.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_graph.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_graph.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_graph.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.class b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.class old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.php b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/exp1_out.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp0.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp0.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp1.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp1.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp10.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp10.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp11.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp12.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp12.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp2.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp2.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp3.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp3.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp4.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp4.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp5.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp5.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp6.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp6.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp7.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp7.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp8.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp8.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp9.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/comp9.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/graph.gif b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/graph.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/simulate.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/simulate.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/simulate1.png b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/images/simulate1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/inv2.sp b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/inv2.sp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/outfile b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/root@10.2.20.209/outfile old mode 100755 new mode 100644 diff --git a/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/temp_backup.java b/src/lab/final-build/EXP_1sep2010_old_26Jan2011/layout/temp_backup.java old mode 100755 new mode 100644 diff --git a/src/lab/final-build/Experiment.php b/src/lab/final-build/Experiment.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/PositiveFlipFlop.bmp b/src/lab/final-build/PositiveFlipFlop.bmp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/ProcedurePics.zip b/src/lab/final-build/ProcedurePics.zip old mode 100755 new mode 100644 diff --git a/src/lab/final-build/README for XAMPP latest.txt b/src/lab/final-build/README for XAMPP latest.txt old mode 100755 new mode 100644 index 9779fc3b..d83ffeaa --- a/src/lab/final-build/README for XAMPP latest.txt +++ b/src/lab/final-build/README for XAMPP latest.txt @@ -1,156 +1,156 @@ -## Preamble - -This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. - - - -## Installation of the documentation module ## - - - - @@@ Hardware Requirements @@@ - Disk space: 10MB free (min). - Memory: 256MB (min), 1GB (recommended). - - - @@@ Software Requirements @@@@ - Web server - Apache2 - PHP5 - MySQL5 - - - #### Installing Apache, PHP and MySQL (if required) #### - - - This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) - I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: - Open the terminal and run following command - sudo su - Enter the sudo password - - $$ ############ XAMPP installation procedure for LINUX ############ - - --> Go to http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/ - - --> Under the list of Browse Files for XAMPP click on 1.7.1 and under it click on xampp-linux-1.7.1.tar.gz to download the package. - - --> Once the package has been downloaded go to a Linux shell and login as the system administrator root: - $ su - - --> Extract the downloaded archive file to /opt: - $ tar xvfz xampp-linux-1.7.1.tar.gz -C /opt - - Warning 1: Please use only this command to install XAMPP. DON'T use any Microsoft Windows tools to extract the archive, it won't work. - Warning 2: already installed XAMPP versions get overwritten by this command. - - --> XAMPP is now installed below the /opt/lampp directory. - - --> To start XAMPP simply call this command: - $ /opt/lampp/lampp start - - --> You should now see something like this on your screen: - - Starting XAMPP 1.7.3a... - LAMPP: Starting Apache... - LAMPP: Starting MySQL... - LAMPP started. - Ready. Apache and MySQL are running - - --> To test go to the browser and type http://localhost and you should see the XAMPP page. - - $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise - path would depend on your web server) and set the required permissions. - - $$ Run the mysql.sql file to setup the database on Mysql - - $$ Enter the configuration details in the config.inc.php file. - - $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser - - - - -## How to USE ## - -* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections - - -* To add a new tab - -Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. - - -* To add a new section - -Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. -Activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. -Edit the file & enter the following details. - -user_pref("capability.policy.policynames", "allowclipboard"); -user_pref("capability.policy.allowclipboard.sites", "http://your website address"); -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); - -edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. - - -* To edit a tab - -Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To edit a section - -Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. -activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. -Edit the file & enter the following details. - -user_pref("capability.policy.policynames", "allowclipboard"); -user_pref("capability.policy.allowclipboard.sites", "http://your website address"); -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); - -edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. - - -* To delete a tab - -Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To delete a section - -Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. - - -* To add a top menu tab - -Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. - - -* To edit a top menu tab - -Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To delete a top menu tab - -Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To view the documentation - -You can use the View Page with new theme link on the control panel page. - -Using the Top Menu:- -There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php file under it where -the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, -the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php - - -For further assistance email us at : -Prof Santosh B. Noronha - noronha@iitb.ac.in -Sushanth Poojary - sushanth@iitb.ac.in -Shahid Ali Farooqui - farooqui@iitb.ac.in -Gaurav Sharma - gsharma86.iitd@gmail.com - +## Preamble + +This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. + + + +## Installation of the documentation module ## + + + + @@@ Hardware Requirements @@@ + Disk space: 10MB free (min). + Memory: 256MB (min), 1GB (recommended). + + + @@@ Software Requirements @@@@ + Web server - Apache2 + PHP5 + MySQL5 + + + #### Installing Apache, PHP and MySQL (if required) #### + + + This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) + I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: + Open the terminal and run following command + sudo su + Enter the sudo password + + $$ ############ XAMPP installation procedure for LINUX ############ + + --> Go to http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/ + + --> Under the list of Browse Files for XAMPP click on 1.7.1 and under it click on xampp-linux-1.7.1.tar.gz to download the package. + + --> Once the package has been downloaded go to a Linux shell and login as the system administrator root: + $ su + + --> Extract the downloaded archive file to /opt: + $ tar xvfz xampp-linux-1.7.1.tar.gz -C /opt + + Warning 1: Please use only this command to install XAMPP. DON'T use any Microsoft Windows tools to extract the archive, it won't work. + Warning 2: already installed XAMPP versions get overwritten by this command. + + --> XAMPP is now installed below the /opt/lampp directory. + + --> To start XAMPP simply call this command: + $ /opt/lampp/lampp start + + --> You should now see something like this on your screen: + + Starting XAMPP 1.7.3a... + LAMPP: Starting Apache... + LAMPP: Starting MySQL... + LAMPP started. + Ready. Apache and MySQL are running + + --> To test go to the browser and type http://localhost and you should see the XAMPP page. + + $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise + path would depend on your web server) and set the required permissions. + + $$ Run the mysql.sql file to setup the database on Mysql + + $$ Enter the configuration details in the config.inc.php file. + + $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser + + + + +## How to USE ## + +* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections + + +* To add a new tab + +Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. + + +* To add a new section + +Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. +Activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. +Edit the file & enter the following details. + +user_pref("capability.policy.policynames", "allowclipboard"); +user_pref("capability.policy.allowclipboard.sites", "http://your website address"); +user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); +user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); + +edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. + + +* To edit a tab + +Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To edit a section + +Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. +activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. +Edit the file & enter the following details. + +user_pref("capability.policy.policynames", "allowclipboard"); +user_pref("capability.policy.allowclipboard.sites", "http://your website address"); +user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); +user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); + +edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. + + +* To delete a tab + +Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To delete a section + +Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. + + +* To add a top menu tab + +Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. + + +* To edit a top menu tab + +Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To delete a top menu tab + +Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To view the documentation + +You can use the View Page with new theme link on the control panel page. + +Using the Top Menu:- +There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php file under it where +the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, +the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php + + +For further assistance email us at : +Prof Santosh B. Noronha - noronha@iitb.ac.in +Sushanth Poojary - sushanth@iitb.ac.in +Shahid Ali Farooqui - farooqui@iitb.ac.in +Gaurav Sharma - gsharma86.iitd@gmail.com + diff --git a/src/lab/final-build/README for XAMPP.txt b/src/lab/final-build/README for XAMPP.txt old mode 100755 new mode 100644 index 5eeb07e4..50751db0 --- a/src/lab/final-build/README for XAMPP.txt +++ b/src/lab/final-build/README for XAMPP.txt @@ -1,137 +1,137 @@ -## Preamble - -This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. - - - -## Installation of the documentation module ## - - - - @@@ Hardware Requirements @@@ - Disk space: 10MB free (min). - Memory: 256MB (min), 1GB (recommended). - - - @@@ Software Requirements @@@@ - Web server - Apache2 - PHP5 - MySQL5 - - - #### Installing Apache, PHP and MySQL (if required) #### - - - This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) - I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: - Open the terminal and run following command - sudo su - Enter the sudo password - - $$ ############ XAMPP installation procedure for LINUX ############ - - --> Go to http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/ - - --> Under the list of Browse Files for XAMPP click on 1.7.1 and under it click on xampp-linux-1.7.1.tar.gz to download the package. - - --> Once the package has been downloaded go to a Linux shell and login as the system administrator root: - $ su - - --> Extract the downloaded archive file to /opt: - $ tar xvfz xampp-linux-1.7.1.tar.gz -C /opt - - Warning 1: Please use only this command to install XAMPP. DON'T use any Microsoft Windows tools to extract the archive, it won't work. - Warning 2: already installed XAMPP versions get overwritten by this command. - - --> XAMPP is now installed below the /opt/lampp directory. - - --> To start XAMPP simply call this command: - $ /opt/lampp/lampp start - - --> You should now see something like this on your screen: - - Starting XAMPP 1.7.3a... - LAMPP: Starting Apache... - LAMPP: Starting MySQL... - LAMPP started. - Ready. Apache and MySQL are running - - --> To test go to the browser and type http://localhost and you should see the XAMPP page. - - $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise - path would depend on your web server) and set the required permissions. - - $$ Run the mysql.sql file to setup the database on Mysql - - $$ Enter the configuration details in the config.inc.php file. - - $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser - - - - -## How to USE ## - -* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections - - -* To add a new tab - -Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. - - -* To add a new section - -Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. - - -* To edit a tab - -Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To edit a section - -Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. - - -* To delete a tab - -Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To delete a section - -Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. - - -* To add a top menu tab - -Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. - - -* To edit a top menu tab - -Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To delete a top menu tab - -Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To view the documentation - -You can use the View Page with new theme link on the control panel page. - -Using the Top Menu:- -There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php fiel under it where -the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, -the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php - -For further assistance email us at : -Prof Santosh B. Noronha - noronha@iitb.ac.in -Sushanth Poojary - sushanth@iitb.ac.in -Shahid Ali Farooqui - farooqui@iitb.ac.in -Gaurav Sharma - gsharma86.iitd@gmail.com - +## Preamble + +This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. + + + +## Installation of the documentation module ## + + + + @@@ Hardware Requirements @@@ + Disk space: 10MB free (min). + Memory: 256MB (min), 1GB (recommended). + + + @@@ Software Requirements @@@@ + Web server - Apache2 + PHP5 + MySQL5 + + + #### Installing Apache, PHP and MySQL (if required) #### + + + This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) + I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: + Open the terminal and run following command + sudo su + Enter the sudo password + + $$ ############ XAMPP installation procedure for LINUX ############ + + --> Go to http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/ + + --> Under the list of Browse Files for XAMPP click on 1.7.1 and under it click on xampp-linux-1.7.1.tar.gz to download the package. + + --> Once the package has been downloaded go to a Linux shell and login as the system administrator root: + $ su + + --> Extract the downloaded archive file to /opt: + $ tar xvfz xampp-linux-1.7.1.tar.gz -C /opt + + Warning 1: Please use only this command to install XAMPP. DON'T use any Microsoft Windows tools to extract the archive, it won't work. + Warning 2: already installed XAMPP versions get overwritten by this command. + + --> XAMPP is now installed below the /opt/lampp directory. + + --> To start XAMPP simply call this command: + $ /opt/lampp/lampp start + + --> You should now see something like this on your screen: + + Starting XAMPP 1.7.3a... + LAMPP: Starting Apache... + LAMPP: Starting MySQL... + LAMPP started. + Ready. Apache and MySQL are running + + --> To test go to the browser and type http://localhost and you should see the XAMPP page. + + $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise + path would depend on your web server) and set the required permissions. + + $$ Run the mysql.sql file to setup the database on Mysql + + $$ Enter the configuration details in the config.inc.php file. + + $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser + + + + +## How to USE ## + +* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections + + +* To add a new tab + +Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. + + +* To add a new section + +Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. + + +* To edit a tab + +Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To edit a section + +Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. + + +* To delete a tab + +Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To delete a section + +Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. + + +* To add a top menu tab + +Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. + + +* To edit a top menu tab + +Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To delete a top menu tab + +Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To view the documentation + +You can use the View Page with new theme link on the control panel page. + +Using the Top Menu:- +There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php fiel under it where +the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, +the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php + +For further assistance email us at : +Prof Santosh B. Noronha - noronha@iitb.ac.in +Sushanth Poojary - sushanth@iitb.ac.in +Shahid Ali Farooqui - farooqui@iitb.ac.in +Gaurav Sharma - gsharma86.iitd@gmail.com + diff --git a/src/lab/final-build/README latest.txt b/src/lab/final-build/README latest.txt old mode 100755 new mode 100644 index 3a95bad3..47b4fee7 --- a/src/lab/final-build/README latest.txt +++ b/src/lab/final-build/README latest.txt @@ -1,149 +1,149 @@ -## Preamble - -This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. - - - -## Installation of the documentation module ## - - - - @@@ Hardware Requirements @@@ - Disk space: 10MB free (min). - Memory: 256MB (min), 1GB (recommended). - - - @@@ Software Requirements @@@@ (latest versions) - Web server - Apache2 - PHP5 - MySQL5 - - - #### Installing Apache, PHP and MySQL (if required) #### - - This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) - I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: - Open the terminal and run following command - sudo su - Enter the sudo password - - #### Installing MySQL 5 #### - - First we install MySQL 5 like this: - aptitude install mysql-server mysql-client - You will be asked to provide a password for the MySQL root user - this password is valid for the user root@localhost as well as root@yourwebserver.com, - so we don't have to specify a MySQL root password manually later on: - New password for the MySQL "root" user: <-- yourrootsqlpassword - Repeat password for the MySQL "root" user: <-- yourrootsqlpassword - - - #### Installing Apache2 #### - Apache2 is available as an Ubuntu package, therefore we can install it as follows: - aptitude install apache2 - Now direct your browser to http://localhost, and you should see the Apache2 placeholder page (It works!): - Apache's default document root is /var/www on Ubuntu, and the configuration file is /etc/apache2/apache2.conf. - Additional configurations are stored in subdirectories of the /etc/apache2 directory such as /etc/apache2/mods-enabled (for Apache modules), - /etc/apache2/sites-enabled (for virtual hosts), and /etc/apache2/conf.d. - Installing PHP5 - We can install PHP5 and the Apache PHP5 module as follows: - aptitude install php5 libapache2-mod-php5 - We must restart Apache afterwards: - /etc/init.d/apache2 restart - - - - $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise - path would depend on your web server) - - $$ Run the mysql.sql file to setup the database on Mysql - - $$ Enter the configuration details in the config.inc.php file. - - $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser - - - -## How to USE ## - -* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections - - -* To add a new tab - -Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. - - -* To add a new section - -Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. -Activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. -Edit the file & enter the following details. - -user_pref("capability.policy.policynames", "allowclipboard"); -user_pref("capability.policy.allowclipboard.sites", "http://your website address"); -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); - -edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. - - -* To edit a tab - -Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To edit a section - -Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. -activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. -Edit the file & enter the following details. - -user_pref("capability.policy.policynames", "allowclipboard"); -user_pref("capability.policy.allowclipboard.sites", "http://your website address"); -user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); -user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); - -edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. - - -* To delete a tab - -Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To delete a section - -Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. - - -* To add a top menu tab - -Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. - - -* To edit a top menu tab - -Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To delete a top menu tab - -Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To view the documentation - -You can use the View Page with new theme link on the control panel page. - -Using the Top Menu:- -There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php file under it where -the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, -the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php - - -For further assistance email us at : -Prof Santosh B. Noronha - noronha@iitb.ac.in -Sushanth Poojary - sushanth@iitb.ac.in -Shahid Ali Farooqui - farooqui@iitb.ac.in -Gaurav Sharma - gsharma86.iitd@gmail.com - +## Preamble + +This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. + + + +## Installation of the documentation module ## + + + + @@@ Hardware Requirements @@@ + Disk space: 10MB free (min). + Memory: 256MB (min), 1GB (recommended). + + + @@@ Software Requirements @@@@ (latest versions) + Web server - Apache2 + PHP5 + MySQL5 + + + #### Installing Apache, PHP and MySQL (if required) #### + + This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) + I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: + Open the terminal and run following command + sudo su + Enter the sudo password + + #### Installing MySQL 5 #### + + First we install MySQL 5 like this: + aptitude install mysql-server mysql-client + You will be asked to provide a password for the MySQL root user - this password is valid for the user root@localhost as well as root@yourwebserver.com, + so we don't have to specify a MySQL root password manually later on: + New password for the MySQL "root" user: <-- yourrootsqlpassword + Repeat password for the MySQL "root" user: <-- yourrootsqlpassword + + + #### Installing Apache2 #### + Apache2 is available as an Ubuntu package, therefore we can install it as follows: + aptitude install apache2 + Now direct your browser to http://localhost, and you should see the Apache2 placeholder page (It works!): + Apache's default document root is /var/www on Ubuntu, and the configuration file is /etc/apache2/apache2.conf. + Additional configurations are stored in subdirectories of the /etc/apache2 directory such as /etc/apache2/mods-enabled (for Apache modules), + /etc/apache2/sites-enabled (for virtual hosts), and /etc/apache2/conf.d. + Installing PHP5 + We can install PHP5 and the Apache PHP5 module as follows: + aptitude install php5 libapache2-mod-php5 + We must restart Apache afterwards: + /etc/init.d/apache2 restart + + + + $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise + path would depend on your web server) + + $$ Run the mysql.sql file to setup the database on Mysql + + $$ Enter the configuration details in the config.inc.php file. + + $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser + + + +## How to USE ## + +* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections + + +* To add a new tab + +Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. + + +* To add a new section + +Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. +Activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. +Edit the file & enter the following details. + +user_pref("capability.policy.policynames", "allowclipboard"); +user_pref("capability.policy.allowclipboard.sites", "http://your website address"); +user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); +user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); + +edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. + + +* To edit a tab + +Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To edit a section + +Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. +activate the editing tools Once on the page. Go to start, run & write %APPDATA%\Mozilla\Firefox\Profiles\ in the tab. Press enter. double click on the folder which has (default) included in its name. Search for a user.js file. if not available, then create it. +Edit the file & enter the following details. + +user_pref("capability.policy.policynames", "allowclipboard"); +user_pref("capability.policy.allowclipboard.sites", "http://your website address"); +user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess"); +user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess"); + +edit & save the file. Restart Mozilla or firefox. and editing tools are activated now. Its preferable to write something first & then start using the tools. + + +* To delete a tab + +Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To delete a section + +Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. + + +* To add a top menu tab + +Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. + + +* To edit a top menu tab + +Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To delete a top menu tab + +Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To view the documentation + +You can use the View Page with new theme link on the control panel page. + +Using the Top Menu:- +There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php file under it where +the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, +the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php + + +For further assistance email us at : +Prof Santosh B. Noronha - noronha@iitb.ac.in +Sushanth Poojary - sushanth@iitb.ac.in +Shahid Ali Farooqui - farooqui@iitb.ac.in +Gaurav Sharma - gsharma86.iitd@gmail.com + diff --git a/src/lab/final-build/README.txt b/src/lab/final-build/README.txt old mode 100755 new mode 100644 index bd27e378..a2a2fff3 --- a/src/lab/final-build/README.txt +++ b/src/lab/final-build/README.txt @@ -1,133 +1,133 @@ -## Preamble - -This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. - - - -## Installation of the documentation module ## - - - - @@@ Hardware Requirements @@@ - Disk space: 10MB free (min). - Memory: 256MB (min), 1GB (recommended). - - - @@@ Software Requirements @@@@ (latest versions) - Web server - Apache2 - PHP5 - MySQL5 - - - #### Installing Apache, PHP and MySQL (if required) #### - - This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) - I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: - Open the terminal and run following command - sudo su - Enter the sudo password - - #### Installing MySQL 5 #### - - First we install MySQL 5 like this: - aptitude install mysql-server mysql-client - You will be asked to provide a password for the MySQL root user - this password is valid for the user root@localhost as well as root@yourwebserver.com, - so we don't have to specify a MySQL root password manually later on: - New password for the MySQL "root" user: <-- yourrootsqlpassword - Repeat password for the MySQL "root" user: <-- yourrootsqlpassword - - - #### Installing Apache2 #### - Apache2 is available as an Ubuntu package, therefore we can install it as follows: - aptitude install apache2 - Now direct your browser to http://localhost, and you should see the Apache2 placeholder page (It works!): - Apache's default document root is /var/www on Ubuntu, and the configuration file is /etc/apache2/apache2.conf. - Additional configurations are stored in subdirectories of the /etc/apache2 directory such as /etc/apache2/mods-enabled (for Apache modules), - /etc/apache2/sites-enabled (for virtual hosts), and /etc/apache2/conf.d. - Installing PHP5 - We can install PHP5 and the Apache PHP5 module as follows: - aptitude install php5 libapache2-mod-php5 - We must restart Apache afterwards: - /etc/init.d/apache2 restart - - - - $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise - path would depend on your web server) - - $$ Run the mysql.sql file to setup the database on Mysql - - $$ Enter the configuration details in the config.inc.php file. - - $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser - - - - -## How to USE ## - -* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections - - -* To add a new tab - -Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. - - -* To add a new section - -Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. - - -* To edit a tab - -Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To edit a section - -Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. - - -* To delete a tab - -Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To delete a section - -Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. - - -* To add a top menu tab - -Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. - - -* To edit a top menu tab - -Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. - - -* To delete a top menu tab - -Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. - - -* To view the documentation - -You can use the View Page with new theme link on the control panel page. - - -Using the Top Menu:- -There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php fiel under it where -the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, -the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php - - -For further assistance email us at : -Prof Santosh B. Noronha - noronha@iitb.ac.in -Sushanth Poojary - sushanth@iitb.ac.in -Shahid Ali Farooqui - farooqui@iitb.ac.in -Gaurav Sharma - gsharma86.iitd@gmail.com - +## Preamble + +This package is developed as an independent module for documentation of experiments of the Virtual lab project. We are currently working on integrating this module into moodle, but encourage its use at this time as a standalone utility. + + + +## Installation of the documentation module ## + + + + @@@ Hardware Requirements @@@ + Disk space: 10MB free (min). + Memory: 256MB (min), 1GB (recommended). + + + @@@ Software Requirements @@@@ (latest versions) + Web server - Apache2 + PHP5 + MySQL5 + + + #### Installing Apache, PHP and MySQL (if required) #### + + This document will explain how to install Apache, PHP and Mysql in Ubuntu 10.04. The procedure on other Linux/MacOS/Win servers would be reasonably similar. For assistance, please contact Shahid/Sushanth (cc to me; email IDs provided at the bottom) + I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root: + Open the terminal and run following command + sudo su + Enter the sudo password + + #### Installing MySQL 5 #### + + First we install MySQL 5 like this: + aptitude install mysql-server mysql-client + You will be asked to provide a password for the MySQL root user - this password is valid for the user root@localhost as well as root@yourwebserver.com, + so we don't have to specify a MySQL root password manually later on: + New password for the MySQL "root" user: <-- yourrootsqlpassword + Repeat password for the MySQL "root" user: <-- yourrootsqlpassword + + + #### Installing Apache2 #### + Apache2 is available as an Ubuntu package, therefore we can install it as follows: + aptitude install apache2 + Now direct your browser to http://localhost, and you should see the Apache2 placeholder page (It works!): + Apache's default document root is /var/www on Ubuntu, and the configuration file is /etc/apache2/apache2.conf. + Additional configurations are stored in subdirectories of the /etc/apache2 directory such as /etc/apache2/mods-enabled (for Apache modules), + /etc/apache2/sites-enabled (for virtual hosts), and /etc/apache2/conf.d. + Installing PHP5 + We can install PHP5 and the Apache PHP5 module as follows: + aptitude install php5 libapache2-mod-php5 + We must restart Apache afterwards: + /etc/init.d/apache2 restart + + + + $$ Extract and copy the documentor.tar.gz folder to the www or HTDOCS folder of your web server installation. (The precise + path would depend on your web server) + + $$ Run the mysql.sql file to setup the database on Mysql + + $$ Enter the configuration details in the config.inc.php file. + + $$ To open the control panel page type http://localhost/documentor/mod_form.php on your web browser + + + + +## How to USE ## + +* The main page mod_form.php contains the links to the different options available to make the documentation tabs and sections + + +* To add a new tab + +Click on the Add a tab link on the main page.Then enter the name of the tab to be created and click on submit to create the tab. + + +* To add a new section + +Click on the Add a section link on the main page.Then select the tab under which you would like to add a section.Then enter the Section title, Author and the Content for the section to be created.The content can be created using the editor using which you can customize the look and feel of the section after which you can click on submit to create the section. + + +* To edit a tab + +Click on the Edit a tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To edit a section + +Click on the Edit a section link on the main page. Then select the tab under which you would like to edit. Then select the section under that tab which you would like to edit .Then edit the Section title, Author or the Content of the section and click on submit to commit the changes. + + +* To delete a tab + +Click on the Delete a tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To delete a section + +Click on the Delete a section link on the main page. Then select the tab under which you would like to delete. Then select the section under that tab which you would like to delete. Then click on submit to commit the changes. + + +* To add a top menu tab + +Click on the Add top menu tab link on the main page. Then enter the name of the tab to be created and click on submit to create the tab. + + +* To edit a top menu tab + +Click on the edit top menu tab link on the main page. Then select the tab which you would like to edit.Then edit the name of the tab and click on submit to commit the changes. + + +* To delete a top menu tab + +Click on the delete top menu tab link on the main page. Then select the tab which you would like to delete.Then click on submit to commit the changes. + + +* To view the documentation + +You can use the View Page with new theme link on the control panel page. + + +Using the Top Menu:- +There is a file named blank.php supplied with other. whenever a new top menu tab is added, the caption is also given a link under it. This link has a xxx.php fiel under it where +the user is redirected when he clicks on tht link. for example, when a user clicks on home top menu tab, he is sent to blank.php. this php is blank & the information for home page can be added here. similarly whenever a new top menu tab is added, +the user has to create a new XXX.php naming it according to the link given under the tab while creating it. this php code for the file can be copied from blank.php + + +For further assistance email us at : +Prof Santosh B. Noronha - noronha@iitb.ac.in +Sushanth Poojary - sushanth@iitb.ac.in +Shahid Ali Farooqui - farooqui@iitb.ac.in +Gaurav Sharma - gsharma86.iitd@gmail.com + diff --git a/src/lab/final-build/Thumbs.db b/src/lab/final-build/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/aboutus.php b/src/lab/final-build/aboutus.php old mode 100755 new mode 100644 index bee5ce50..1d30a638 --- a/src/lab/final-build/aboutus.php +++ b/src/lab/final-build/aboutus.php @@ -1,174 +1,174 @@ - - - -Virtual Labs - IIIT Hyderabad - - - - - - - - - - - - - - - - -

    -
    - - -

    - - People -
    -
    - -
    -
    -
    - - -
    -
    "; - if (!$cid) { - - die("ERROR: " . mysql_error() . "\n"); - - } -mysql_select_db($db); -$stuff = mysql_query("SELECT * FROM people WHERE type='faculty'" ) or die("MySQL Login Error: ".mysql_error()); - -if (mysql_num_rows($stuff) > 0) { - -$row=mysql_num_rows($stuff); - - - -print("

    Faculty


    "); -/* -while($row = mysql_fetch_array($stuff)) - { - $pic=$row['pic']; - $author=$row['author']; - $ptext=$row['posttext']; - $link=$row['weblink']; - - - print(" - - - - - - -
    - - -

    $author

    -

    $ptext

    -
    - "); -} */ -} -$stuff = mysql_query("SELECT * FROM people WHERE type='student'" ) or die("MySQL Login Error: ".mysql_error()); - -if (mysql_num_rows($stuff) > 0) { - -$row=mysql_num_rows($stuff); - - - -print("


    Virtual Lab Developer


    "); -/* -while($row = mysql_fetch_array($stuff)) - { - $pic=$row['pic']; - $author=$row['author']; - $ptext=$row['posttext']; - $link=$row['weblink']; - - - print(" - - - - - - -
    - - -

    $author

    -

    $ptext

    -
    - "); - - - - } */ - -} - -?>

    -

    - -
    -
    -

    -
    - - - - + + + +Virtual Labs - IIIT Hyderabad + + + + + + + + + + + + + + + + +
    +
    + + +

    + + People +
    +
    + +
    +
    +
    + + +
    +
    "; + if (!$cid) { + + die("ERROR: " . mysql_error() . "\n"); + + } +mysql_select_db($db); +$stuff = mysql_query("SELECT * FROM people WHERE type='faculty'" ) or die("MySQL Login Error: ".mysql_error()); + +if (mysql_num_rows($stuff) > 0) { + +$row=mysql_num_rows($stuff); + + + +print("

    Faculty


    "); +/* +while($row = mysql_fetch_array($stuff)) + { + $pic=$row['pic']; + $author=$row['author']; + $ptext=$row['posttext']; + $link=$row['weblink']; + + + print(" + + + + + + +
    + + +

    $author

    +

    $ptext

    +
    + "); +} */ +} +$stuff = mysql_query("SELECT * FROM people WHERE type='student'" ) or die("MySQL Login Error: ".mysql_error()); + +if (mysql_num_rows($stuff) > 0) { + +$row=mysql_num_rows($stuff); + + + +print("


    Virtual Lab Developer


    "); +/* +while($row = mysql_fetch_array($stuff)) + { + $pic=$row['pic']; + $author=$row['author']; + $ptext=$row['posttext']; + $link=$row['weblink']; + + + print(" + + + + + + +
    + + +

    $author

    +

    $ptext

    +
    + "); + + + + } */ + +} + +?>

    +

    + +
    +
    +

    +
    + + + + diff --git a/src/lab/final-build/add_section.php b/src/lab/final-build/add_section.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/add_tab.php b/src/lab/final-build/add_tab.php old mode 100755 new mode 100644 index 1100a935..63c2c5af --- a/src/lab/final-build/add_tab.php +++ b/src/lab/final-build/add_tab.php @@ -1,33 +1,33 @@ - - - - - - -Virtual Labs - IIT Bombay + + + + + + +Virtual Labs - IIT Bombay - - - -
    - - - - - + + +
     
    +
    + + + +
     
    +
    +
    +
    + + + +
    + + diff --git a/src/lab/final-build/add_tab_top.php b/src/lab/final-build/add_tab_top.php old mode 100755 new mode 100644 index dd130826..dbb1a171 --- a/src/lab/final-build/add_tab_top.php +++ b/src/lab/final-build/add_tab_top.php @@ -1,33 +1,33 @@ - - - - - - -Virtual Labs - IIT Bombay + + + + + + +Virtual Labs - IIT Bombay - - - -
    - - - - - + + +
     
    +
    + + + +
     
    + + + + + + + + + diff --git a/src/lab/final-build/and.jpg b/src/lab/final-build/and.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/asyn.jpg b/src/lab/final-build/asyn.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/blank.html b/src/lab/final-build/blank.html old mode 100755 new mode 100644 index e3b33cbf..25be187d --- a/src/lab/final-build/blank.html +++ b/src/lab/final-build/blank.html @@ -1,136 +1,136 @@ - - - - - -Virtual Labs - IIT Bombay - - - - - - - - - - - - - - - - - - -
    -
    - - -

    - -
    -
    - -
    -
    -
    - - - -
    -
    -
      - 0) { - -$row=mysql_num_rows($stuff); - - - -while($row = mysql_fetch_array($stuff)) - { - $cap=$row['caption']; - $tid=$row['tid']; - $pic=$row['icon']; - -echo "

    • $cap
    • \n"; - } - -} - -?> -
    - -
    - - -
    - -

    -

    - -
    -
    -

    -
    - - - + + + + + +Virtual Labs - IIT Bombay + + + + + + + + + + + + + + + + + + +
    +
    + + +

    + +
    +
    + +
    +
    +
    + + + +
    +
    +
      + 0) { + +$row=mysql_num_rows($stuff); + + + +while($row = mysql_fetch_array($stuff)) + { + $cap=$row['caption']; + $tid=$row['tid']; + $pic=$row['icon']; + +echo "

    • $cap
    • \n"; + } + +} + +?> +
    + +
    + + +
    + +

    +

    + +
    +
    +

    +
    + + + \ No newline at end of file diff --git a/src/lab/final-build/blank.php b/src/lab/final-build/blank.php old mode 100755 new mode 100644 index 9f962916..2d361a47 --- a/src/lab/final-build/blank.php +++ b/src/lab/final-build/blank.php @@ -1,99 +1,99 @@ - - - - - -Virtual Labs - IIT Bombay - - - - - - - - - - - - - - - - - - -
    -
    - - +

    + +
    +
    + +
    +
    +
    + + + +
    +
    +
      +
    + +
    + + +

    + +
    +
    +

    +
    + + + \ No newline at end of file diff --git a/src/lab/final-build/c.jpg b/src/lab/final-build/c.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/cl1.jpg b/src/lab/final-build/cl1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/comp1.jpg b/src/lab/final-build/comp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/comp2.jpg b/src/lab/final-build/comp2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/comp3.jpg b/src/lab/final-build/comp3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/comp4.jpg b/src/lab/final-build/comp4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/config.inc.php b/src/lab/final-build/config.inc.php old mode 100755 new mode 100644 index ab92e1a4..5aa0022a --- a/src/lab/final-build/config.inc.php +++ b/src/lab/final-build/config.inc.php @@ -1,9 +1,9 @@ 0) -{ - - echo "

    Tab Successfully Delete to the Database




    <<<< Go back to control panel








    "; - - } -else -{ -echo "

    ERROR in Update









    "; - die("Invalid Entry " . mysql_error() . "\n"); - } - - mysql_close($cid); - - - - -?> +$result = mysql_query("DELETE FROM menu WHERE tid='".$tabid."'") or die("MySQL Login Error: ".mysql_error()); + + + + + + +# Check for errors. + +if (mysql_affected_rows() > 0) +{ + + echo "

    Tab Successfully Delete to the Database




    <<<< Go back to control panel








    "; + + } +else +{ +echo "

    ERROR in Update









    "; + die("Invalid Entry " . mysql_error() . "\n"); + } + + mysql_close($cid); + + + + +?> diff --git a/src/lab/final-build/del_tabtop.php b/src/lab/final-build/del_tabtop.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/dintro.jpg b/src/lab/final-build/dintro.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/direc.jpg b/src/lab/final-build/direc.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/edit_section.php b/src/lab/final-build/edit_section.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/edit_tab.php b/src/lab/final-build/edit_tab.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/edit_tabtop.php b/src/lab/final-build/edit_tabtop.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/elec_anal1.jpg b/src/lab/final-build/elec_anal1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/elec_anal2(2).jpg b/src/lab/final-build/elec_anal2(2).jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/elec_anal2(3).jpg b/src/lab/final-build/elec_anal2(3).jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/elec_anal2.jpg b/src/lab/final-build/elec_anal2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/elec_anal3.jpg b/src/lab/final-build/elec_anal3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/electric_field.jpg b/src/lab/final-build/electric_field.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/electric_field1.jpg b/src/lab/final-build/electric_field1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/electric_field2.jpg b/src/lab/final-build/electric_field2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/electric_field3.jpg b/src/lab/final-build/electric_field3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/electric_field4.jpg b/src/lab/final-build/electric_field4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_cylinder.jpg b/src/lab/final-build/exp2_cylinder.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_line.jpg b/src/lab/final-build/exp2_line.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_obj.jpg b/src/lab/final-build/exp2_obj.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_point.jpg b/src/lab/final-build/exp2_point.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_quiz1.jpg b/src/lab/final-build/exp2_quiz1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_quiz2.jpg b/src/lab/final-build/exp2_quiz2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_sheet.jpg b/src/lab/final-build/exp2_sheet.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_surface.jpg b/src/lab/final-build/exp2_surface.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp2_volume.jpg b/src/lab/final-build/exp2_volume.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp4_theory.jpg b/src/lab/final-build/exp4_theory.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/exp4_theory1.jpg b/src/lab/final-build/exp4_theory1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/expe2_intro.jpg b/src/lab/final-build/expe2_intro.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/experimentHome.php b/src/lab/final-build/experimentHome.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/f_s.jpg b/src/lab/final-build/f_s.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/four_xnor.jpg b/src/lab/final-build/four_xnor.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/four_xor.jpg b/src/lab/final-build/four_xor.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/func.addsection.php b/src/lab/final-build/func.addsection.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/func.addtab.php b/src/lab/final-build/func.addtab.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/func.addtabtop.php b/src/lab/final-build/func.addtabtop.php old mode 100755 new mode 100644 diff --git a/src/lab/final-build/func.editsection.php b/src/lab/final-build/func.editsection.php old mode 100755 new mode 100644 index 4103108d..5044717e --- a/src/lab/final-build/func.editsection.php +++ b/src/lab/final-build/func.editsection.php @@ -1,13 +1,13 @@ - 0) -{ - - echo "

    Section Successfully Updated to the Database




    <<<< Go back to control panel








    "; - - } -else -{ -echo "

    ERROR in Update









    "; - die("Invalid Entry " . mysql_error() . "\n"); - } - - mysql_close($cid); - - - - - - - - -?> +$result = mysql_query("UPDATE content SET title = '".$ptitle."',author = '".$author."' , posttext = '".$content."', date = '".$today."' WHERE pid ='".$pid."' AND tid ='".$tabid."'") or die("MySQL Login Error: ".mysql_error()); + + + + + + +# Check for errors. + +if (mysql_affected_rows() > 0) +{ + + echo "

    Section Successfully Updated to the Database




    <<<< Go back to control panel








    "; + + } +else +{ +echo "

    ERROR in Update









    "; + die("Invalid Entry " . mysql_error() . "\n"); + } + + mysql_close($cid); + + + + + + + + +?> diff --git a/src/lab/final-build/func.edittab.php b/src/lab/final-build/func.edittab.php old mode 100755 new mode 100644 index 49d100f5..7940886b --- a/src/lab/final-build/func.edittab.php +++ b/src/lab/final-build/func.edittab.php @@ -1,11 +1,11 @@ - 0) -{ - - echo "

    Tab Successfully Updated to the Database




    <<<< Go back to control panel








    "; - - } -else -{ -echo "

    ERROR in Update









    "; - die("Invalid Entry " . mysql_error() . "\n"); - } - - mysql_close($cid); - - - - -?> +$result = mysql_query("UPDATE menu SET caption = '".$tabcap."' WHERE tid ='".$tabid."'") or die("MySQL Login Error: ".mysql_error()); + + + + + + +# Check for errors. + +if (mysql_affected_rows() > 0) +{ + + echo "

    Tab Successfully Updated to the Database




    <<<< Go back to control panel








    "; + + } +else +{ +echo "

    ERROR in Update









    "; + die("Invalid Entry " . mysql_error() . "\n"); + } + + mysql_close($cid); + + + + +?> diff --git a/src/lab/final-build/func.edittabtop.php b/src/lab/final-build/func.edittabtop.php old mode 100755 new mode 100644 index b8f156bd..0e2c83a5 --- a/src/lab/final-build/func.edittabtop.php +++ b/src/lab/final-build/func.edittabtop.php @@ -1,11 +1,11 @@ - 0) -{ - - echo "

    Tab Successfully Updated to the Database




    <<<< Go back to control panel








    "; - - } -else -{ -echo "

    ERROR in Update









    "; - die("Invalid Entry " . mysql_error() . "\n"); - } - - mysql_close($cid); - - - - -?> +$result = mysql_query("UPDATE topmenu SET caption = '".$tabcap."',link = '".$tablink."' WHERE Srno ='".$srno."'") or die("MySQL Login Error: ".mysql_error()); + + + + + + +# Check for errors. + +if (mysql_affected_rows() > 0) +{ + + echo "

    Tab Successfully Updated to the Database




    <<<< Go back to control panel








    "; + + } +else +{ +echo "

    ERROR in Update









    "; + die("Invalid Entry " . mysql_error() . "\n"); + } + + mysql_close($cid); + + + + +?> diff --git a/src/lab/final-build/gateChain.bmp b/src/lab/final-build/gateChain.bmp old mode 100755 new mode 100644 diff --git a/src/lab/final-build/gateIntro1.jpg b/src/lab/final-build/gateIntro1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/header_01.jpg b/src/lab/final-build/header_01.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/icon.gif b/src/lab/final-build/icon.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/image_force.jpg b/src/lab/final-build/image_force.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/Icon_simulator.jpg b/src/lab/final-build/images/Icon_simulator.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/Icon_theory.jpg b/src/lab/final-build/images/Icon_theory.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/Thumbs.db b/src/lab/final-build/images/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/assignment.jpg b/src/lab/final-build/images/assignment.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/books.jpg b/src/lab/final-build/images/books.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/content_bg.jpg b/src/lab/final-build/images/content_bg.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/d_latch.gif b/src/lab/final-build/images/d_latch.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/eval.jpg b/src/lab/final-build/images/eval.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/feedback.jpg b/src/lab/final-build/images/feedback.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/footer-curve.jpg b/src/lab/final-build/images/footer-curve.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/header-blue.gif b/src/lab/final-build/images/header-blue.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/header_01.jpg b/src/lab/final-build/images/header_01.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/header_03.jpg b/src/lab/final-build/images/header_03.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/1245599423.png b/src/lab/final-build/images/images/1245599423.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/Columbs.jpg b/src/lab/final-build/images/images/Columbs.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/Copy of style.css b/src/lab/final-build/images/images/Copy of style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/Thumbs.db b/src/lab/final-build/images/images/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/VistaArrowIconsPreview2.jpg b/src/lab/final-build/images/images/VistaArrowIconsPreview2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/__utm.js b/src/lab/final-build/images/images/__utm.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/amo2009.js b/src/lab/final-build/images/images/amo2009.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/appletpic.jpg b/src/lab/final-build/images/images/appletpic.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/appletpic1.jpg b/src/lab/final-build/images/images/appletpic1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/bdot.jpg b/src/lab/final-build/images/images/bdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/blackdot.jpg b/src/lab/final-build/images/images/blackdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/blue-bullet.jpg b/src/lab/final-build/images/images/blue-bullet.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/columbs7.png b/src/lab/final-build/images/images/columbs7.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb.jpg b/src/lab/final-build/images/images/coulomb.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb1.jpg b/src/lab/final-build/images/images/coulomb1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb2.jpg b/src/lab/final-build/images/images/coulomb2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb3.jpg b/src/lab/final-build/images/images/coulomb3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb4.jpg b/src/lab/final-build/images/images/coulomb4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb5.jpg b/src/lab/final-build/images/images/coulomb5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/coulomb6.jpg b/src/lab/final-build/images/images/coulomb6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/default_icon.png b/src/lab/final-build/images/images/default_icon.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole1.jpg b/src/lab/final-build/images/images/dipole1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole2.jpg b/src/lab/final-build/images/images/dipole2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole3.jpg b/src/lab/final-build/images/images/dipole3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole4.jpg b/src/lab/final-build/images/images/dipole4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole5.jpg b/src/lab/final-build/images/images/dipole5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole6.jpg b/src/lab/final-build/images/images/dipole6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole7.jpg b/src/lab/final-build/images/images/dipole7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/dipole7thumbnail.jpg b/src/lab/final-build/images/images/dipole7thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/FREE.PNG b/src/lab/final-build/images/images/earthquake/FREE.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/NRIDGE3_plot.PNG b/src/lab/final-build/images/images/earthquake/NRIDGE3_plot.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/Pendulum.PNG b/src/lab/final-build/images/images/earthquake/Pendulum.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/Thumbs.db b/src/lab/final-build/images/images/earthquake/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/building02.gif b/src/lab/final-build/images/images/earthquake/building02.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp1.jpg b/src/lab/final-build/images/images/earthquake/dp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp10.jpg b/src/lab/final-build/images/images/earthquake/dp10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp11.jpg b/src/lab/final-build/images/images/earthquake/dp11.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp12.jpg b/src/lab/final-build/images/images/earthquake/dp12.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp13.jpg b/src/lab/final-build/images/images/earthquake/dp13.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp14.jpg b/src/lab/final-build/images/images/earthquake/dp14.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp2.jpg b/src/lab/final-build/images/images/earthquake/dp2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp3.jpg b/src/lab/final-build/images/images/earthquake/dp3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp4.jpg b/src/lab/final-build/images/images/earthquake/dp4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp5.jpg b/src/lab/final-build/images/images/earthquake/dp5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp6.jpg b/src/lab/final-build/images/images/earthquake/dp6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp8.jpg b/src/lab/final-build/images/images/earthquake/dp8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/dp9.jpg b/src/lab/final-build/images/images/earthquake/dp9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ1.PNG b/src/lab/final-build/images/images/earthquake/equ1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ10.PNG b/src/lab/final-build/images/images/earthquake/equ10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ11.PNG b/src/lab/final-build/images/images/earthquake/equ11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ12.PNG b/src/lab/final-build/images/images/earthquake/equ12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ13.PNG b/src/lab/final-build/images/images/earthquake/equ13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ14.PNG b/src/lab/final-build/images/images/earthquake/equ14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ15.PNG b/src/lab/final-build/images/images/earthquake/equ15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ16.PNG b/src/lab/final-build/images/images/earthquake/equ16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ17.PNG b/src/lab/final-build/images/images/earthquake/equ17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ18.PNG b/src/lab/final-build/images/images/earthquake/equ18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ19.PNG b/src/lab/final-build/images/images/earthquake/equ19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ2.PNG b/src/lab/final-build/images/images/earthquake/equ2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ20.PNG b/src/lab/final-build/images/images/earthquake/equ20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ21.PNG b/src/lab/final-build/images/images/earthquake/equ21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ22.PNG b/src/lab/final-build/images/images/earthquake/equ22.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ23.PNG b/src/lab/final-build/images/images/earthquake/equ23.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ24.PNG b/src/lab/final-build/images/images/earthquake/equ24.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ25.PNG b/src/lab/final-build/images/images/earthquake/equ25.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ26.PNG b/src/lab/final-build/images/images/earthquake/equ26.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ27.PNG b/src/lab/final-build/images/images/earthquake/equ27.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ28.PNG b/src/lab/final-build/images/images/earthquake/equ28.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ3.PNG b/src/lab/final-build/images/images/earthquake/equ3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ4.PNG b/src/lab/final-build/images/images/earthquake/equ4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ5.PNG b/src/lab/final-build/images/images/earthquake/equ5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ6.PNG b/src/lab/final-build/images/images/earthquake/equ6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ7.PNG b/src/lab/final-build/images/images/earthquake/equ7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ8.PNG b/src/lab/final-build/images/images/earthquake/equ8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/equ9.PNG b/src/lab/final-build/images/images/earthquake/equ9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/me1.jpg b/src/lab/final-build/images/images/earthquake/me1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml1.jpg b/src/lab/final-build/images/images/earthquake/ml1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml10.jpg b/src/lab/final-build/images/images/earthquake/ml10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml11.JPG b/src/lab/final-build/images/images/earthquake/ml11.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml2.jpg b/src/lab/final-build/images/images/earthquake/ml2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml3.jpg b/src/lab/final-build/images/images/earthquake/ml3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml4.jpg b/src/lab/final-build/images/images/earthquake/ml4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml5.jpg b/src/lab/final-build/images/images/earthquake/ml5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml6.jpg b/src/lab/final-build/images/images/earthquake/ml6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml7.jpg b/src/lab/final-build/images/images/earthquake/ml7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml8.jpg b/src/lab/final-build/images/images/earthquake/ml8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/ml9.jpg b/src/lab/final-build/images/images/earthquake/ml9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not1.PNG b/src/lab/final-build/images/images/earthquake/not1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not10.PNG b/src/lab/final-build/images/images/earthquake/not10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not11.PNG b/src/lab/final-build/images/images/earthquake/not11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not12.PNG b/src/lab/final-build/images/images/earthquake/not12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not13.PNG b/src/lab/final-build/images/images/earthquake/not13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not14.PNG b/src/lab/final-build/images/images/earthquake/not14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not15.PNG b/src/lab/final-build/images/images/earthquake/not15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not16.PNG b/src/lab/final-build/images/images/earthquake/not16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not17.PNG b/src/lab/final-build/images/images/earthquake/not17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not18.PNG b/src/lab/final-build/images/images/earthquake/not18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not19.PNG b/src/lab/final-build/images/images/earthquake/not19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not2.PNG b/src/lab/final-build/images/images/earthquake/not2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not20.PNG b/src/lab/final-build/images/images/earthquake/not20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not21.PNG b/src/lab/final-build/images/images/earthquake/not21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not3.PNG b/src/lab/final-build/images/images/earthquake/not3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not4.PNG b/src/lab/final-build/images/images/earthquake/not4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not5.PNG b/src/lab/final-build/images/images/earthquake/not5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not6.PNG b/src/lab/final-build/images/images/earthquake/not6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not7.PNG b/src/lab/final-build/images/images/earthquake/not7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not8.PNG b/src/lab/final-build/images/images/earthquake/not8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/not9.PNG b/src/lab/final-build/images/images/earthquake/not9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/pe1.jpg b/src/lab/final-build/images/images/earthquake/pe1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/pe2.jpg b/src/lab/final-build/images/images/earthquake/pe2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/pe3.jpg b/src/lab/final-build/images/images/earthquake/pe3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/pe4.jpg b/src/lab/final-build/images/images/earthquake/pe4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/earthquake/pe5.jpg b/src/lab/final-build/images/images/earthquake/pe5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody2D.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody2D_full.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_full.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s1.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s1_full.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s2.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s2_full.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s3.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ForcedVibBody_s3_full.JPG b/src/lab/final-build/images/images/exp/ForcedVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody.JPG b/src/lab/final-build/images/images/exp/FreeVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody2D.JPG b/src/lab/final-build/images/images/exp/FreeVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody2D_full.JPG b/src/lab/final-build/images/images/exp/FreeVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_full.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s1.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s1_full.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s2.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s2_full.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s3.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/FreeVibBody_s3_full.JPG b/src/lab/final-build/images/images/exp/FreeVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/MDOF.JPG b/src/lab/final-build/images/images/exp/MDOF.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/MDOF_full.JPG b/src/lab/final-build/images/images/exp/MDOF_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum.JPG b/src/lab/final-build/images/images/exp/Pendulum.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum2D.JPG b/src/lab/final-build/images/images/exp/Pendulum2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum2D_full.JPG b/src/lab/final-build/images/images/exp/Pendulum2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum_full.JPG b/src/lab/final-build/images/images/exp/Pendulum_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum_s1.JPG b/src/lab/final-build/images/images/exp/Pendulum_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Pendulum_s1_full.JPG b/src/lab/final-build/images/images/exp/Pendulum_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/PhotoElectric.JPG b/src/lab/final-build/images/images/exp/PhotoElectric.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/PhotoElectric_full.JPG b/src/lab/final-build/images/images/exp/PhotoElectric_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ResponseSpecturm.JPG b/src/lab/final-build/images/images/exp/ResponseSpecturm.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ResponseSpecturm_full.JPG b/src/lab/final-build/images/images/exp/ResponseSpecturm_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ShakeTable.JPG b/src/lab/final-build/images/images/exp/ShakeTable.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/ShakeTable_full.JPG b/src/lab/final-build/images/images/exp/ShakeTable_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/Thumbs.db b/src/lab/final-build/images/images/exp/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/calorimeter.JPG b/src/lab/final-build/images/images/exp/calorimeter.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/calorimeter_full.JPG b/src/lab/final-build/images/images/exp/calorimeter_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/dipoleMoment.JPG b/src/lab/final-build/images/images/exp/dipoleMoment.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/dipoleMoment_full.JPG b/src/lab/final-build/images/images/exp/dipoleMoment_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/dipoleMoment_liquid.JPG b/src/lab/final-build/images/images/exp/dipoleMoment_liquid.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/dipoleMoment_liquid_full.JPG b/src/lab/final-build/images/images/exp/dipoleMoment_liquid_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/millikan.JPG b/src/lab/final-build/images/images/exp/millikan.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/millikan_full.JPG b/src/lab/final-build/images/images/exp/millikan_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/opticalRot.JPG b/src/lab/final-build/images/images/exp/opticalRot.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/opticalRot_full.JPG b/src/lab/final-build/images/images/exp/opticalRot_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/phScale.JPG b/src/lab/final-build/images/images/exp/phScale.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp/phScale_full.JPG b/src/lab/final-build/images/images/exp/phScale_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/exp1.jpg b/src/lab/final-build/images/images/exp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/f_s.jpg b/src/lab/final-build/images/images/f_s.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/forms.css b/src/lab/final-build/images/images/forms.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/freevib1.jpg b/src/lab/final-build/images/images/freevib1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/freevib1thumbnail.jpg b/src/lab/final-build/images/images/freevib1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image2.JPG b/src/lab/final-build/images/images/image2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image3.JPG b/src/lab/final-build/images/images/image3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image4.JPG b/src/lab/final-build/images/images/image4.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image5.JPG b/src/lab/final-build/images/images/image5.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image6.JPG b/src/lab/final-build/images/images/image6.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image7.JPG b/src/lab/final-build/images/images/image7.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/image_force.jpg b/src/lab/final-build/images/images/image_force.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/images_force2.jpg b/src/lab/final-build/images/images/images_force2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/intro_image.jpg b/src/lab/final-build/images/images/intro_image.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/js_constants.js b/src/lab/final-build/images/images/js_constants.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/left-round.jpg b/src/lab/final-build/images/images/left-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/logo.jpg b/src/lab/final-build/images/images/logo.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/nav-bar-sep.png b/src/lab/final-build/images/images/nav-bar-sep.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/navbar-bg.jpg b/src/lab/final-build/images/images/navbar-bg.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/obj.jpg b/src/lab/final-build/images/images/obj.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/panel.css b/src/lab/final-build/images/images/panel.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/pendulum1.jpg b/src/lab/final-build/images/images/pendulum1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/pendulum1thumbnail.jpg b/src/lab/final-build/images/images/pendulum1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/people/Thumbs.db b/src/lab/final-build/images/images/people/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/people/pic1.png b/src/lab/final-build/images/images/people/pic1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/people/pic2.jpg b/src/lab/final-build/images/images/people/pic2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/people/pic3.jpg b/src/lab/final-build/images/images/people/pic3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/photoelectric.gif b/src/lab/final-build/images/images/photoelectric.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/photoelectric.jpg b/src/lab/final-build/images/images/photoelectric.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/quest.gif b/src/lab/final-build/images/images/quest.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/quest.jpg b/src/lab/final-build/images/images/quest.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/right-round.jpg b/src/lab/final-build/images/images/right-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/style.css b/src/lab/final-build/images/images/style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/images/title.jpg b/src/lab/final-build/images/images/title.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img01.gif b/src/lab/final-build/images/img01.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img02.jpg b/src/lab/final-build/images/img02.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img03.gif b/src/lab/final-build/images/img03.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img04.jpg b/src/lab/final-build/images/img04.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img05.jpg b/src/lab/final-build/images/img05.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img06.jpg b/src/lab/final-build/images/img06.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img08.jpg b/src/lab/final-build/images/img08.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img082.jpg b/src/lab/final-build/images/img082.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img09.jpg b/src/lab/final-build/images/img09.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img092.jpg b/src/lab/final-build/images/img092.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img10.jpg b/src/lab/final-build/images/img10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img102.jpg b/src/lab/final-build/images/img102.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/img11.gif b/src/lab/final-build/images/img11.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/index_05.jpg b/src/lab/final-build/images/index_05.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/navshadow.gif b/src/lab/final-build/images/navshadow.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/pos_edge_d.gif b/src/lab/final-build/images/pos_edge_d.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/procedure.jpg b/src/lab/final-build/images/procedure.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/sim.jpg b/src/lab/final-build/images/sim.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/assignment.jpg b/src/lab/final-build/images/submenu_pics/assignment.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/books.jpg b/src/lab/final-build/images/submenu_pics/books.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/feedback.jpg b/src/lab/final-build/images/submenu_pics/feedback.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/intro.jpeg b/src/lab/final-build/images/submenu_pics/intro.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/manual.jpeg b/src/lab/final-build/images/submenu_pics/manual.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/object.jpeg b/src/lab/final-build/images/submenu_pics/object.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/objective.jpeg b/src/lab/final-build/images/submenu_pics/objective.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/pro.jpg b/src/lab/final-build/images/submenu_pics/pro.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/procedure.jpg b/src/lab/final-build/images/submenu_pics/procedure.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/quiz.jpeg b/src/lab/final-build/images/submenu_pics/quiz.jpeg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/sim.jpg b/src/lab/final-build/images/submenu_pics/sim.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/submenu_pics/theory.jpg b/src/lab/final-build/images/submenu_pics/theory.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images/theory.jpg b/src/lab/final-build/images/theory.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_force2.jpg b/src/lab/final-build/images_force2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/1245599423.png b/src/lab/final-build/images_new/1245599423.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/Columbs.jpg b/src/lab/final-build/images_new/Columbs.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/Copy of style.css b/src/lab/final-build/images_new/Copy of style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/Thumbs.db b/src/lab/final-build/images_new/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/VistaArrowIconsPreview2.jpg b/src/lab/final-build/images_new/VistaArrowIconsPreview2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/__utm.js b/src/lab/final-build/images_new/__utm.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/amo2009.js b/src/lab/final-build/images_new/amo2009.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/appletpic.jpg b/src/lab/final-build/images_new/appletpic.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/appletpic1.jpg b/src/lab/final-build/images_new/appletpic1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/bdot.jpg b/src/lab/final-build/images_new/bdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/blackdot.jpg b/src/lab/final-build/images_new/blackdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/blue-bullet.jpg b/src/lab/final-build/images_new/blue-bullet.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/columbs7.png b/src/lab/final-build/images_new/columbs7.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb.jpg b/src/lab/final-build/images_new/coulomb.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb1.jpg b/src/lab/final-build/images_new/coulomb1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb2.jpg b/src/lab/final-build/images_new/coulomb2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb3.jpg b/src/lab/final-build/images_new/coulomb3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb4.jpg b/src/lab/final-build/images_new/coulomb4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb5.jpg b/src/lab/final-build/images_new/coulomb5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/coulomb6.jpg b/src/lab/final-build/images_new/coulomb6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/default_icon.png b/src/lab/final-build/images_new/default_icon.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole1.jpg b/src/lab/final-build/images_new/dipole1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole2.jpg b/src/lab/final-build/images_new/dipole2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole3.jpg b/src/lab/final-build/images_new/dipole3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole4.jpg b/src/lab/final-build/images_new/dipole4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole5.jpg b/src/lab/final-build/images_new/dipole5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole6.jpg b/src/lab/final-build/images_new/dipole6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole7.jpg b/src/lab/final-build/images_new/dipole7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/dipole7thumbnail.jpg b/src/lab/final-build/images_new/dipole7thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/FREE.PNG b/src/lab/final-build/images_new/earthquake/FREE.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/NRIDGE3_plot.PNG b/src/lab/final-build/images_new/earthquake/NRIDGE3_plot.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/Pendulum.PNG b/src/lab/final-build/images_new/earthquake/Pendulum.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/Thumbs.db b/src/lab/final-build/images_new/earthquake/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/building02.gif b/src/lab/final-build/images_new/earthquake/building02.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp1.jpg b/src/lab/final-build/images_new/earthquake/dp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp10.jpg b/src/lab/final-build/images_new/earthquake/dp10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp11.jpg b/src/lab/final-build/images_new/earthquake/dp11.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp12.jpg b/src/lab/final-build/images_new/earthquake/dp12.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp13.jpg b/src/lab/final-build/images_new/earthquake/dp13.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp14.jpg b/src/lab/final-build/images_new/earthquake/dp14.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp2.jpg b/src/lab/final-build/images_new/earthquake/dp2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp3.jpg b/src/lab/final-build/images_new/earthquake/dp3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp4.jpg b/src/lab/final-build/images_new/earthquake/dp4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp5.jpg b/src/lab/final-build/images_new/earthquake/dp5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp6.jpg b/src/lab/final-build/images_new/earthquake/dp6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp8.jpg b/src/lab/final-build/images_new/earthquake/dp8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/dp9.jpg b/src/lab/final-build/images_new/earthquake/dp9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ1.PNG b/src/lab/final-build/images_new/earthquake/equ1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ10.PNG b/src/lab/final-build/images_new/earthquake/equ10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ11.PNG b/src/lab/final-build/images_new/earthquake/equ11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ12.PNG b/src/lab/final-build/images_new/earthquake/equ12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ13.PNG b/src/lab/final-build/images_new/earthquake/equ13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ14.PNG b/src/lab/final-build/images_new/earthquake/equ14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ15.PNG b/src/lab/final-build/images_new/earthquake/equ15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ16.PNG b/src/lab/final-build/images_new/earthquake/equ16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ17.PNG b/src/lab/final-build/images_new/earthquake/equ17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ18.PNG b/src/lab/final-build/images_new/earthquake/equ18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ19.PNG b/src/lab/final-build/images_new/earthquake/equ19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ2.PNG b/src/lab/final-build/images_new/earthquake/equ2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ20.PNG b/src/lab/final-build/images_new/earthquake/equ20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ21.PNG b/src/lab/final-build/images_new/earthquake/equ21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ22.PNG b/src/lab/final-build/images_new/earthquake/equ22.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ23.PNG b/src/lab/final-build/images_new/earthquake/equ23.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ24.PNG b/src/lab/final-build/images_new/earthquake/equ24.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ25.PNG b/src/lab/final-build/images_new/earthquake/equ25.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ26.PNG b/src/lab/final-build/images_new/earthquake/equ26.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ27.PNG b/src/lab/final-build/images_new/earthquake/equ27.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ28.PNG b/src/lab/final-build/images_new/earthquake/equ28.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ3.PNG b/src/lab/final-build/images_new/earthquake/equ3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ4.PNG b/src/lab/final-build/images_new/earthquake/equ4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ5.PNG b/src/lab/final-build/images_new/earthquake/equ5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ6.PNG b/src/lab/final-build/images_new/earthquake/equ6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ7.PNG b/src/lab/final-build/images_new/earthquake/equ7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ8.PNG b/src/lab/final-build/images_new/earthquake/equ8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/equ9.PNG b/src/lab/final-build/images_new/earthquake/equ9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/me1.jpg b/src/lab/final-build/images_new/earthquake/me1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml1.jpg b/src/lab/final-build/images_new/earthquake/ml1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml10.jpg b/src/lab/final-build/images_new/earthquake/ml10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml11.JPG b/src/lab/final-build/images_new/earthquake/ml11.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml2.jpg b/src/lab/final-build/images_new/earthquake/ml2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml3.jpg b/src/lab/final-build/images_new/earthquake/ml3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml4.jpg b/src/lab/final-build/images_new/earthquake/ml4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml5.jpg b/src/lab/final-build/images_new/earthquake/ml5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml6.jpg b/src/lab/final-build/images_new/earthquake/ml6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml7.jpg b/src/lab/final-build/images_new/earthquake/ml7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml8.jpg b/src/lab/final-build/images_new/earthquake/ml8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/ml9.jpg b/src/lab/final-build/images_new/earthquake/ml9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not1.PNG b/src/lab/final-build/images_new/earthquake/not1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not10.PNG b/src/lab/final-build/images_new/earthquake/not10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not11.PNG b/src/lab/final-build/images_new/earthquake/not11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not12.PNG b/src/lab/final-build/images_new/earthquake/not12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not13.PNG b/src/lab/final-build/images_new/earthquake/not13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not14.PNG b/src/lab/final-build/images_new/earthquake/not14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not15.PNG b/src/lab/final-build/images_new/earthquake/not15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not16.PNG b/src/lab/final-build/images_new/earthquake/not16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not17.PNG b/src/lab/final-build/images_new/earthquake/not17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not18.PNG b/src/lab/final-build/images_new/earthquake/not18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not19.PNG b/src/lab/final-build/images_new/earthquake/not19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not2.PNG b/src/lab/final-build/images_new/earthquake/not2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not20.PNG b/src/lab/final-build/images_new/earthquake/not20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not21.PNG b/src/lab/final-build/images_new/earthquake/not21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not3.PNG b/src/lab/final-build/images_new/earthquake/not3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not4.PNG b/src/lab/final-build/images_new/earthquake/not4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not5.PNG b/src/lab/final-build/images_new/earthquake/not5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not6.PNG b/src/lab/final-build/images_new/earthquake/not6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not7.PNG b/src/lab/final-build/images_new/earthquake/not7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not8.PNG b/src/lab/final-build/images_new/earthquake/not8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/not9.PNG b/src/lab/final-build/images_new/earthquake/not9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/pe1.jpg b/src/lab/final-build/images_new/earthquake/pe1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/pe2.jpg b/src/lab/final-build/images_new/earthquake/pe2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/pe3.jpg b/src/lab/final-build/images_new/earthquake/pe3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/pe4.jpg b/src/lab/final-build/images_new/earthquake/pe4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/earthquake/pe5.jpg b/src/lab/final-build/images_new/earthquake/pe5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody2D.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody2D_full.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_full.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s1.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s1_full.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s2.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s2_full.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s3.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ForcedVibBody_s3_full.JPG b/src/lab/final-build/images_new/exp/ForcedVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody.JPG b/src/lab/final-build/images_new/exp/FreeVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody2D.JPG b/src/lab/final-build/images_new/exp/FreeVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody2D_full.JPG b/src/lab/final-build/images_new/exp/FreeVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_full.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s1.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s1_full.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s2.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s2_full.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s3.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/FreeVibBody_s3_full.JPG b/src/lab/final-build/images_new/exp/FreeVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/MDOF.JPG b/src/lab/final-build/images_new/exp/MDOF.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/MDOF_full.JPG b/src/lab/final-build/images_new/exp/MDOF_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum.JPG b/src/lab/final-build/images_new/exp/Pendulum.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum2D.JPG b/src/lab/final-build/images_new/exp/Pendulum2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum2D_full.JPG b/src/lab/final-build/images_new/exp/Pendulum2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum_full.JPG b/src/lab/final-build/images_new/exp/Pendulum_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum_s1.JPG b/src/lab/final-build/images_new/exp/Pendulum_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Pendulum_s1_full.JPG b/src/lab/final-build/images_new/exp/Pendulum_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/PhotoElectric.JPG b/src/lab/final-build/images_new/exp/PhotoElectric.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/PhotoElectric_full.JPG b/src/lab/final-build/images_new/exp/PhotoElectric_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ResponseSpecturm.JPG b/src/lab/final-build/images_new/exp/ResponseSpecturm.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ResponseSpecturm_full.JPG b/src/lab/final-build/images_new/exp/ResponseSpecturm_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ShakeTable.JPG b/src/lab/final-build/images_new/exp/ShakeTable.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/ShakeTable_full.JPG b/src/lab/final-build/images_new/exp/ShakeTable_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/Thumbs.db b/src/lab/final-build/images_new/exp/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/calorimeter.JPG b/src/lab/final-build/images_new/exp/calorimeter.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/calorimeter_full.JPG b/src/lab/final-build/images_new/exp/calorimeter_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/dipoleMoment.JPG b/src/lab/final-build/images_new/exp/dipoleMoment.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/dipoleMoment_full.JPG b/src/lab/final-build/images_new/exp/dipoleMoment_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/dipoleMoment_liquid.JPG b/src/lab/final-build/images_new/exp/dipoleMoment_liquid.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/dipoleMoment_liquid_full.JPG b/src/lab/final-build/images_new/exp/dipoleMoment_liquid_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/millikan.JPG b/src/lab/final-build/images_new/exp/millikan.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/millikan_full.JPG b/src/lab/final-build/images_new/exp/millikan_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/opticalRot.JPG b/src/lab/final-build/images_new/exp/opticalRot.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/opticalRot_full.JPG b/src/lab/final-build/images_new/exp/opticalRot_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/phScale.JPG b/src/lab/final-build/images_new/exp/phScale.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp/phScale_full.JPG b/src/lab/final-build/images_new/exp/phScale_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/exp1.jpg b/src/lab/final-build/images_new/exp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/f_s.jpg b/src/lab/final-build/images_new/f_s.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/forms.css b/src/lab/final-build/images_new/forms.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/freevib1.jpg b/src/lab/final-build/images_new/freevib1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/freevib1thumbnail.jpg b/src/lab/final-build/images_new/freevib1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image2.JPG b/src/lab/final-build/images_new/image2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image3.JPG b/src/lab/final-build/images_new/image3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image4.JPG b/src/lab/final-build/images_new/image4.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image5.JPG b/src/lab/final-build/images_new/image5.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image6.JPG b/src/lab/final-build/images_new/image6.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image7.JPG b/src/lab/final-build/images_new/image7.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/image_force.jpg b/src/lab/final-build/images_new/image_force.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/images_force2.jpg b/src/lab/final-build/images_new/images_force2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/intro_image.jpg b/src/lab/final-build/images_new/intro_image.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/js_constants.js b/src/lab/final-build/images_new/js_constants.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/left-round.jpg b/src/lab/final-build/images_new/left-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/logo.jpg b/src/lab/final-build/images_new/logo.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/nav-bar-sep.png b/src/lab/final-build/images_new/nav-bar-sep.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/navbar-bg.jpg b/src/lab/final-build/images_new/navbar-bg.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/obj.jpg b/src/lab/final-build/images_new/obj.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/panel.css b/src/lab/final-build/images_new/panel.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/pendulum1.jpg b/src/lab/final-build/images_new/pendulum1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/pendulum1thumbnail.jpg b/src/lab/final-build/images_new/pendulum1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/people/Thumbs.db b/src/lab/final-build/images_new/people/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/people/pic1.png b/src/lab/final-build/images_new/people/pic1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/people/pic2.jpg b/src/lab/final-build/images_new/people/pic2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/people/pic3.jpg b/src/lab/final-build/images_new/people/pic3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/photoelectric.gif b/src/lab/final-build/images_new/photoelectric.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/photoelectric.jpg b/src/lab/final-build/images_new/photoelectric.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/quest.gif b/src/lab/final-build/images_new/quest.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/quest.jpg b/src/lab/final-build/images_new/quest.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/right-round.jpg b/src/lab/final-build/images_new/right-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/style.css b/src/lab/final-build/images_new/style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_new/title.jpg b/src/lab/final-build/images_new/title.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/1245599423.png b/src/lab/final-build/images_site/1245599423.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/Columbs.jpg b/src/lab/final-build/images_site/Columbs.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/Copy of style.css b/src/lab/final-build/images_site/Copy of style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/Thumbs.db b/src/lab/final-build/images_site/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/VistaArrowIconsPreview2.jpg b/src/lab/final-build/images_site/VistaArrowIconsPreview2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/__utm.js b/src/lab/final-build/images_site/__utm.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/amo2009.js b/src/lab/final-build/images_site/amo2009.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/appletpic.jpg b/src/lab/final-build/images_site/appletpic.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/appletpic1.jpg b/src/lab/final-build/images_site/appletpic1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/bdot.jpg b/src/lab/final-build/images_site/bdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/blackdot.jpg b/src/lab/final-build/images_site/blackdot.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/blue-bullet.jpg b/src/lab/final-build/images_site/blue-bullet.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/columbs7.png b/src/lab/final-build/images_site/columbs7.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/default_icon.png b/src/lab/final-build/images_site/default_icon.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole1.jpg b/src/lab/final-build/images_site/dipole1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole2.jpg b/src/lab/final-build/images_site/dipole2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole3.jpg b/src/lab/final-build/images_site/dipole3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole4.jpg b/src/lab/final-build/images_site/dipole4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole5.jpg b/src/lab/final-build/images_site/dipole5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole6.jpg b/src/lab/final-build/images_site/dipole6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole7.jpg b/src/lab/final-build/images_site/dipole7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/dipole7thumbnail.jpg b/src/lab/final-build/images_site/dipole7thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/FREE.PNG b/src/lab/final-build/images_site/earthquake/FREE.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/NRIDGE3_plot.PNG b/src/lab/final-build/images_site/earthquake/NRIDGE3_plot.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/Pendulum.PNG b/src/lab/final-build/images_site/earthquake/Pendulum.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/Thumbs.db b/src/lab/final-build/images_site/earthquake/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/building02.gif b/src/lab/final-build/images_site/earthquake/building02.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp1.jpg b/src/lab/final-build/images_site/earthquake/dp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp10.jpg b/src/lab/final-build/images_site/earthquake/dp10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp11.jpg b/src/lab/final-build/images_site/earthquake/dp11.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp12.jpg b/src/lab/final-build/images_site/earthquake/dp12.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp13.jpg b/src/lab/final-build/images_site/earthquake/dp13.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp14.jpg b/src/lab/final-build/images_site/earthquake/dp14.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp2.jpg b/src/lab/final-build/images_site/earthquake/dp2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp3.jpg b/src/lab/final-build/images_site/earthquake/dp3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp4.jpg b/src/lab/final-build/images_site/earthquake/dp4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp5.jpg b/src/lab/final-build/images_site/earthquake/dp5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp6.jpg b/src/lab/final-build/images_site/earthquake/dp6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp8.jpg b/src/lab/final-build/images_site/earthquake/dp8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/dp9.jpg b/src/lab/final-build/images_site/earthquake/dp9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ1.PNG b/src/lab/final-build/images_site/earthquake/equ1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ10.PNG b/src/lab/final-build/images_site/earthquake/equ10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ11.PNG b/src/lab/final-build/images_site/earthquake/equ11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ12.PNG b/src/lab/final-build/images_site/earthquake/equ12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ13.PNG b/src/lab/final-build/images_site/earthquake/equ13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ14.PNG b/src/lab/final-build/images_site/earthquake/equ14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ15.PNG b/src/lab/final-build/images_site/earthquake/equ15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ16.PNG b/src/lab/final-build/images_site/earthquake/equ16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ17.PNG b/src/lab/final-build/images_site/earthquake/equ17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ18.PNG b/src/lab/final-build/images_site/earthquake/equ18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ19.PNG b/src/lab/final-build/images_site/earthquake/equ19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ2.PNG b/src/lab/final-build/images_site/earthquake/equ2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ20.PNG b/src/lab/final-build/images_site/earthquake/equ20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ21.PNG b/src/lab/final-build/images_site/earthquake/equ21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ22.PNG b/src/lab/final-build/images_site/earthquake/equ22.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ23.PNG b/src/lab/final-build/images_site/earthquake/equ23.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ24.PNG b/src/lab/final-build/images_site/earthquake/equ24.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ25.PNG b/src/lab/final-build/images_site/earthquake/equ25.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ26.PNG b/src/lab/final-build/images_site/earthquake/equ26.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ27.PNG b/src/lab/final-build/images_site/earthquake/equ27.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ28.PNG b/src/lab/final-build/images_site/earthquake/equ28.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ3.PNG b/src/lab/final-build/images_site/earthquake/equ3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ4.PNG b/src/lab/final-build/images_site/earthquake/equ4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ5.PNG b/src/lab/final-build/images_site/earthquake/equ5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ6.PNG b/src/lab/final-build/images_site/earthquake/equ6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ7.PNG b/src/lab/final-build/images_site/earthquake/equ7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ8.PNG b/src/lab/final-build/images_site/earthquake/equ8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/equ9.PNG b/src/lab/final-build/images_site/earthquake/equ9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/me1.jpg b/src/lab/final-build/images_site/earthquake/me1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml1.jpg b/src/lab/final-build/images_site/earthquake/ml1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml10.jpg b/src/lab/final-build/images_site/earthquake/ml10.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml11.JPG b/src/lab/final-build/images_site/earthquake/ml11.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml2.jpg b/src/lab/final-build/images_site/earthquake/ml2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml3.jpg b/src/lab/final-build/images_site/earthquake/ml3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml4.jpg b/src/lab/final-build/images_site/earthquake/ml4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml5.jpg b/src/lab/final-build/images_site/earthquake/ml5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml6.jpg b/src/lab/final-build/images_site/earthquake/ml6.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml7.jpg b/src/lab/final-build/images_site/earthquake/ml7.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml8.jpg b/src/lab/final-build/images_site/earthquake/ml8.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/ml9.jpg b/src/lab/final-build/images_site/earthquake/ml9.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not1.PNG b/src/lab/final-build/images_site/earthquake/not1.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not10.PNG b/src/lab/final-build/images_site/earthquake/not10.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not11.PNG b/src/lab/final-build/images_site/earthquake/not11.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not12.PNG b/src/lab/final-build/images_site/earthquake/not12.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not13.PNG b/src/lab/final-build/images_site/earthquake/not13.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not14.PNG b/src/lab/final-build/images_site/earthquake/not14.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not15.PNG b/src/lab/final-build/images_site/earthquake/not15.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not16.PNG b/src/lab/final-build/images_site/earthquake/not16.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not17.PNG b/src/lab/final-build/images_site/earthquake/not17.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not18.PNG b/src/lab/final-build/images_site/earthquake/not18.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not19.PNG b/src/lab/final-build/images_site/earthquake/not19.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not2.PNG b/src/lab/final-build/images_site/earthquake/not2.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not20.PNG b/src/lab/final-build/images_site/earthquake/not20.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not21.PNG b/src/lab/final-build/images_site/earthquake/not21.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not3.PNG b/src/lab/final-build/images_site/earthquake/not3.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not4.PNG b/src/lab/final-build/images_site/earthquake/not4.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not5.PNG b/src/lab/final-build/images_site/earthquake/not5.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not6.PNG b/src/lab/final-build/images_site/earthquake/not6.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not7.PNG b/src/lab/final-build/images_site/earthquake/not7.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not8.PNG b/src/lab/final-build/images_site/earthquake/not8.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/not9.PNG b/src/lab/final-build/images_site/earthquake/not9.PNG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/pe1.jpg b/src/lab/final-build/images_site/earthquake/pe1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/pe2.jpg b/src/lab/final-build/images_site/earthquake/pe2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/pe3.jpg b/src/lab/final-build/images_site/earthquake/pe3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/pe4.jpg b/src/lab/final-build/images_site/earthquake/pe4.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/earthquake/pe5.jpg b/src/lab/final-build/images_site/earthquake/pe5.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody2D.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody2D_full.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_full.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s1.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s1_full.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s2.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s2_full.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s3.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ForcedVibBody_s3_full.JPG b/src/lab/final-build/images_site/exp/ForcedVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody.JPG b/src/lab/final-build/images_site/exp/FreeVibBody.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody2D.JPG b/src/lab/final-build/images_site/exp/FreeVibBody2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody2D_full.JPG b/src/lab/final-build/images_site/exp/FreeVibBody2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_full.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s1.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s1_full.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s2.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s2_full.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s2_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s3.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/FreeVibBody_s3_full.JPG b/src/lab/final-build/images_site/exp/FreeVibBody_s3_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/MDOF.JPG b/src/lab/final-build/images_site/exp/MDOF.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/MDOF_full.JPG b/src/lab/final-build/images_site/exp/MDOF_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum.JPG b/src/lab/final-build/images_site/exp/Pendulum.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum2D.JPG b/src/lab/final-build/images_site/exp/Pendulum2D.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum2D_full.JPG b/src/lab/final-build/images_site/exp/Pendulum2D_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum_full.JPG b/src/lab/final-build/images_site/exp/Pendulum_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum_s1.JPG b/src/lab/final-build/images_site/exp/Pendulum_s1.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Pendulum_s1_full.JPG b/src/lab/final-build/images_site/exp/Pendulum_s1_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/PhotoElectric.JPG b/src/lab/final-build/images_site/exp/PhotoElectric.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/PhotoElectric_full.JPG b/src/lab/final-build/images_site/exp/PhotoElectric_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ResponseSpecturm.JPG b/src/lab/final-build/images_site/exp/ResponseSpecturm.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ResponseSpecturm_full.JPG b/src/lab/final-build/images_site/exp/ResponseSpecturm_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ShakeTable.JPG b/src/lab/final-build/images_site/exp/ShakeTable.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/ShakeTable_full.JPG b/src/lab/final-build/images_site/exp/ShakeTable_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/Thumbs.db b/src/lab/final-build/images_site/exp/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/calorimeter.JPG b/src/lab/final-build/images_site/exp/calorimeter.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/calorimeter_full.JPG b/src/lab/final-build/images_site/exp/calorimeter_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/dipoleMoment.JPG b/src/lab/final-build/images_site/exp/dipoleMoment.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/dipoleMoment_full.JPG b/src/lab/final-build/images_site/exp/dipoleMoment_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/dipoleMoment_liquid.JPG b/src/lab/final-build/images_site/exp/dipoleMoment_liquid.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/dipoleMoment_liquid_full.JPG b/src/lab/final-build/images_site/exp/dipoleMoment_liquid_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/millikan.JPG b/src/lab/final-build/images_site/exp/millikan.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/millikan_full.JPG b/src/lab/final-build/images_site/exp/millikan_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/opticalRot.JPG b/src/lab/final-build/images_site/exp/opticalRot.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/opticalRot_full.JPG b/src/lab/final-build/images_site/exp/opticalRot_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/phScale.JPG b/src/lab/final-build/images_site/exp/phScale.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp/phScale_full.JPG b/src/lab/final-build/images_site/exp/phScale_full.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/exp1.jpg b/src/lab/final-build/images_site/exp1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/forms.css b/src/lab/final-build/images_site/forms.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/freevib1.jpg b/src/lab/final-build/images_site/freevib1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/freevib1thumbnail.jpg b/src/lab/final-build/images_site/freevib1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/header_01.jpg b/src/lab/final-build/images_site/header_01.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image2.JPG b/src/lab/final-build/images_site/image2.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image3.JPG b/src/lab/final-build/images_site/image3.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image4.JPG b/src/lab/final-build/images_site/image4.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image5.JPG b/src/lab/final-build/images_site/image5.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image6.JPG b/src/lab/final-build/images_site/image6.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/image7.JPG b/src/lab/final-build/images_site/image7.JPG old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/js_constants.js b/src/lab/final-build/images_site/js_constants.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/left-round.jpg b/src/lab/final-build/images_site/left-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/logo.jpg b/src/lab/final-build/images_site/logo.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/nav-bar-sep.png b/src/lab/final-build/images_site/nav-bar-sep.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/navbar-bg.jpg b/src/lab/final-build/images_site/navbar-bg.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/panel.css b/src/lab/final-build/images_site/panel.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/pendulum1.jpg b/src/lab/final-build/images_site/pendulum1.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/pendulum1thumbnail.jpg b/src/lab/final-build/images_site/pendulum1thumbnail.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/people/Thumbs.db b/src/lab/final-build/images_site/people/Thumbs.db old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/people/pic1.png b/src/lab/final-build/images_site/people/pic1.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/people/pic2.jpg b/src/lab/final-build/images_site/people/pic2.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/people/pic3.jpg b/src/lab/final-build/images_site/people/pic3.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/people/syed.jpg b/src/lab/final-build/images_site/people/syed.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/photoelectric.gif b/src/lab/final-build/images_site/photoelectric.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/photoelectric.jpg b/src/lab/final-build/images_site/photoelectric.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/quest.gif b/src/lab/final-build/images_site/quest.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/right-round.jpg b/src/lab/final-build/images_site/right-round.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/style.css b/src/lab/final-build/images_site/style.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/images_site/title.jpg b/src/lab/final-build/images_site/title.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/index1.html b/src/lab/final-build/index1.html old mode 100755 new mode 100644 index ca366771..1f96ccf5 --- a/src/lab/final-build/index1.html +++ b/src/lab/final-build/index1.html @@ -1,123 +1,123 @@ - - - - - - -Virtual Labs - IIT Bombay - - - -
    - - - - -
    -
    -
    -
    -
    -
    -
    -

    Welcome to Virtual Labs

    -

    Posted by Prof A M Kulkarni on April 16, 2010 -  •  Comments 

    -
    -

    Physical distances and the lack of resources make us unable to perform experiments, especially when they involve sophisticated instruments. Also, good teachers are always a scarce resource. Web-based and video-based courses address the issue of teaching to some extent. Conducting joint experiments by two participating institutions and also sharing costly resources has always been a challenge. With the present day internet and computer technologies the above limitations can no more hamper students and researchers in enhancing their skills and knowledge. Also, in a country such as ours, costly instruments and equipment need to be shared with fellow researchers to the extent possible.

    -

    The armature of the DC motor is fed from a (controlled) three phase thyristor rectifier. The DC voltage to motor field is also provided by a similar controlled rectifier. All the interconnections of the components are made inside the panel. A measurement card is enclosed inside the panel, which is used to measure and scale down the voltages and currents of the motor and generator.

    -
    -
    -
    -
    -
    -
    -
    -

    Virtual lab Setup

    -

    Posted by Ashwin Damle on April 2, 2010 -  •  Comments 

    -
    -

    The setup consists of a controlled prime mover (DC motor - separately excited) coupled to a synchronous generator which is to be connected to a power grid. The synchronous generator is excited by a controlled AC-DC power electronic converter. A separately excited DC motor is used as a prime mover. The armature of the DC motor is fed from a (controlled) three phase thyristor rectifier. The DC voltage to motor field is also provided by a similar controlled rectifier. All the interconnections of the components are made inside the panel.

    -

    A measurement card is enclosed inside the panel, which is used to measure and scale down the voltages and currents of the motor and generator.

    -

    - -
    -
    -
    -
    -
    -
    -

    QNX

    -

    Posted by Sushanth Poojary on March 8, 2010 -  •  Comments 

    -

    QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems. As a microkernel-based OS, QNX is based on the idea of running most of the OS in the form of a number of small tasks, known as servers. This differs from the more traditional monolithic kernel, in which the operating system is a single very large program composed of a huge number of "parts" with special abilities.

    -
    -
    -
    -
    -
     
    -
    - - - -
     
    -
    -
    -
    - - - -
    - - + + + + + + +Virtual Labs - IIT Bombay + + + +
    + + + + +
    +
    +
    +
    +
    +
    +
    +

    Welcome to Virtual Labs

    +

    Posted by Prof A M Kulkarni on April 16, 2010 +  •  Comments 

    +
    +

    Physical distances and the lack of resources make us unable to perform experiments, especially when they involve sophisticated instruments. Also, good teachers are always a scarce resource. Web-based and video-based courses address the issue of teaching to some extent. Conducting joint experiments by two participating institutions and also sharing costly resources has always been a challenge. With the present day internet and computer technologies the above limitations can no more hamper students and researchers in enhancing their skills and knowledge. Also, in a country such as ours, costly instruments and equipment need to be shared with fellow researchers to the extent possible.

    +

    The armature of the DC motor is fed from a (controlled) three phase thyristor rectifier. The DC voltage to motor field is also provided by a similar controlled rectifier. All the interconnections of the components are made inside the panel. A measurement card is enclosed inside the panel, which is used to measure and scale down the voltages and currents of the motor and generator.

    +
    +
    +
    +
    +
    +
    +
    +

    Virtual lab Setup

    +

    Posted by Ashwin Damle on April 2, 2010 +  •  Comments 

    +
    +

    The setup consists of a controlled prime mover (DC motor - separately excited) coupled to a synchronous generator which is to be connected to a power grid. The synchronous generator is excited by a controlled AC-DC power electronic converter. A separately excited DC motor is used as a prime mover. The armature of the DC motor is fed from a (controlled) three phase thyristor rectifier. The DC voltage to motor field is also provided by a similar controlled rectifier. All the interconnections of the components are made inside the panel.

    +

    A measurement card is enclosed inside the panel, which is used to measure and scale down the voltages and currents of the motor and generator.

    +

    + +
    +
    +
    +
    +
    +
    +

    QNX

    +

    Posted by Sushanth Poojary on March 8, 2010 +  •  Comments 

    +

    QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems. As a microkernel-based OS, QNX is based on the idea of running most of the OS in the form of a number of small tasks, known as servers. This differs from the more traditional monolithic kernel, in which the operating system is a single very large program composed of a huge number of "parts" with special abilities.

    +
    +
    +
    +
    +
     
    +
    + + + +
     
    +
    +
    +
    + + + +
    + + diff --git a/src/lab/final-build/index1.pho b/src/lab/final-build/index1.pho old mode 100755 new mode 100644 diff --git a/src/lab/final-build/index_iitbombay.php b/src/lab/final-build/index_iitbombay.php old mode 100755 new mode 100644 index 645a7e7f..8c5b037e --- a/src/lab/final-build/index_iitbombay.php +++ b/src/lab/final-build/index_iitbombay.php @@ -1,67 +1,67 @@ - - - - - - -Virtual Labs - IIT Bombay - - - -
    - - - +
    + + + +
    + + diff --git a/src/lab/final-build/intro_image.jpg b/src/lab/final-build/intro_image.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/intro_verilog.html b/src/lab/final-build/intro_verilog.html old mode 100755 new mode 100644 diff --git a/src/lab/final-build/inverter_procedure.jpg b/src/lab/final-build/inverter_procedure.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jquery.js b/src/lab/final-build/jquery.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/js/ddtabmenu.js b/src/lab/final-build/js/ddtabmenu.js old mode 100755 new mode 100644 index e5e323b3..72cf2d98 --- a/src/lab/final-build/js/ddtabmenu.js +++ b/src/lab/final-build/js/ddtabmenu.js @@ -1,96 +1,96 @@ -//DD Tab Menu- Script rewritten April 27th, 07: http://www.dynamicdrive.com -//**Updated Feb 23rd, 08): Adds ability for menu to revert back to default selected tab when mouse moves out of menu - -//Only 2 configuration variables below: - -var ddtabmenu={ - disabletablinks: false, //Disable hyperlinks in 1st level tabs with sub contents (true or false)? - snap2original: [true, 300], //Should tab revert back to default selected when mouse moves out of menu? ([true/false, delay_millisec] - - currentpageurl: window.location.href.replace("http://"+window.location.hostname, "").replace(/^\//, ""), //get current page url (minus hostname, ie: http://www.dynamicdrive.com/) - -definemenu:function(tabid, dselected){ - this[tabid+"-menuitems"]=null - this[tabid+"-dselected"]=-1 - this.addEvent(window, function(){ddtabmenu.init(tabid, dselected)}, "load") -}, - -showsubmenu:function(tabid, targetitem){ - var menuitems=this[tabid+"-menuitems"] - this.clearrevert2default(tabid) - for (i=0; i - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/css/advhr.css b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/css/advhr.css old mode 100755 new mode 100644 index 0e228349..3fe369cb --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/css/advhr.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/css/advhr.css @@ -1,5 +1,5 @@ -input.radio {border:1px none #000; background:transparent; vertical-align:middle;} -.panel_wrapper div.current {height:80px;} -#width {width:50px; vertical-align:middle;} -#width2 {width:50px; vertical-align:middle;} -#size {width:100px;} +input.radio {border:1px none #000; background:transparent; vertical-align:middle;} +.panel_wrapper div.current {height:80px;} +#width {width:50px; vertical-align:middle;} +#width2 {width:50px; vertical-align:middle;} +#size {width:100px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js old mode 100755 new mode 100644 index 0c652d33..5a4b7250 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js @@ -1,57 +1,57 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.AdvancedHRPlugin', { - init : function(ed, url) { - // Register commands - ed.addCommand('mceAdvancedHr', function() { - ed.windowManager.open({ - file : url + '/rule.htm', - width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)), - height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('advhr', { - title : 'advhr.advhr_desc', - cmd : 'mceAdvancedHr' - }); - - ed.onNodeChange.add(function(ed, cm, n) { - cm.setActive('advhr', n.nodeName == 'HR'); - }); - - ed.onClick.add(function(ed, e) { - e = e.target; - - if (e.nodeName === 'HR') - ed.selection.select(e); - }); - }, - - getInfo : function() { - return { - longname : 'Advanced HR', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.AdvancedHRPlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceAdvancedHr', function() { + ed.windowManager.open({ + file : url + '/rule.htm', + width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)), + height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('advhr', { + title : 'advhr.advhr_desc', + cmd : 'mceAdvancedHr' + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('advhr', n.nodeName == 'HR'); + }); + + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'HR') + ed.selection.select(e); + }); + }, + + getInfo : function() { + return { + longname : 'Advanced HR', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/js/rule.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/js/rule.js old mode 100755 new mode 100644 index b6cbd66c..a60c35fc --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/js/rule.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advhr/js/rule.js @@ -1,43 +1,43 @@ -var AdvHRDialog = { - init : function(ed) { - var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w; - - w = dom.getAttrib(n, 'width'); - f.width.value = w ? parseInt(w) : (dom.getStyle('width') || ''); - f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || ''; - f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width'); - selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px'); - }, - - update : function() { - var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = ''; - - h = ' - - - {#advhr.advhr_desc} - - - - - - - - - - -
    -
    - - - - - - - - - - - - - -
    - - -
    -
    -
    - -
    - - -
    - - - + + + + {#advhr.advhr_desc} + + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + +
    + + +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/css/advimage.css b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/css/advimage.css old mode 100755 new mode 100644 index 0a6251a6..228530f9 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/css/advimage.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/css/advimage.css @@ -1,13 +1,13 @@ -#src_list, #over_list, #out_list {width:280px;} -.mceActionPanel {margin-top:7px;} -.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} -.checkbox {border:0;} -.panel_wrapper div.current {height:305px;} -#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} -#align, #classlist {width:150px;} -#width, #height {vertical-align:middle; width:50px; text-align:center;} -#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} -#class_list {width:180px;} -input {width: 280px;} -#constrain, #onmousemovecheck {width:auto;} -#id, #dir, #lang, #usemap, #longdesc {width:200px;} +#src_list, #over_list, #out_list {width:280px;} +.mceActionPanel {margin-top:7px;} +.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} +.checkbox {border:0;} +.panel_wrapper div.current {height:305px;} +#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} +#align, #classlist {width:150px;} +#width, #height {vertical-align:middle; width:50px; text-align:center;} +#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} +#class_list {width:180px;} +input {width: 280px;} +#constrain, #onmousemovecheck {width:auto;} +#id, #dir, #lang, #usemap, #longdesc {width:200px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js old mode 100755 new mode 100644 index 2625dd21..351542f6 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js @@ -1,50 +1,50 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.AdvancedImagePlugin', { - init : function(ed, url) { - // Register commands - ed.addCommand('mceAdvImage', function() { - // Internal image object like a flash placeholder - if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) - return; - - ed.windowManager.open({ - file : url + '/image.htm', - width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)), - height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('image', { - title : 'advimage.image_desc', - cmd : 'mceAdvImage' - }); - }, - - getInfo : function() { - return { - longname : 'Advanced image', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.AdvancedImagePlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceAdvImage', function() { + // Internal image object like a flash placeholder + if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + return; + + ed.windowManager.open({ + file : url + '/image.htm', + width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)), + height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('image', { + title : 'advimage.image_desc', + cmd : 'mceAdvImage' + }); + }, + + getInfo : function() { + return { + longname : 'Advanced image', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/image.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/image.htm old mode 100755 new mode 100644 index 79cff3f1..7af5a003 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/image.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/image.htm @@ -1,232 +1,232 @@ - - - - {#advimage_dlg.dialog_title} - - - - - - - - - -
    - - -
    -
    -
    - {#advimage_dlg.general} - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    - -
    - {#advimage_dlg.preview} - -
    -
    - -
    -
    - {#advimage_dlg.tab_appearance} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - {#advimage_dlg.example_img} - Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam - nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum - edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam - erat volutpat. -
    -
    - x - px -
      - - - - -
    -
    -
    -
    - -
    -
    - {#advimage_dlg.swap_image} - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    - - - - -
     
    -
    - -
    - {#advimage_dlg.misc} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    - - - - -
     
    -
    -
    -
    - -
    - - -
    -
    - - + + + + {#advimage_dlg.dialog_title} + + + + + + + + + +
    + + +
    +
    +
    + {#advimage_dlg.general} + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    +
    + +
    + {#advimage_dlg.preview} + +
    +
    + +
    +
    + {#advimage_dlg.tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + {#advimage_dlg.example_img} + Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam + nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum + edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam + erat volutpat. +
    +
    + x + px +
      + + + + +
    +
    +
    +
    + +
    +
    + {#advimage_dlg.swap_image} + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    + + + + +
     
    +
    + +
    + {#advimage_dlg.misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + +
     
    +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/img/sample.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/img/sample.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/js/image.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/js/image.js old mode 100755 new mode 100644 index 3bda86a2..d08e4694 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/js/image.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/js/image.js @@ -1,443 +1,443 @@ -var ImageDialog = { - preInit : function() { - var url; - - tinyMCEPopup.requireLangPack(); - - if (url = tinyMCEPopup.getParam("external_image_list_url")) - document.write(''); - }, - - init : function(ed) { - var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(); - - tinyMCEPopup.resizeToInnerSize(); - this.fillClassList('class_list'); - this.fillFileList('src_list', 'tinyMCEImageList'); - this.fillFileList('over_list', 'tinyMCEImageList'); - this.fillFileList('out_list', 'tinyMCEImageList'); - TinyMCE_EditableSelects.init(); - - if (n.nodeName == 'IMG') { - nl.src.value = dom.getAttrib(n, 'src'); - nl.width.value = dom.getAttrib(n, 'width'); - nl.height.value = dom.getAttrib(n, 'height'); - nl.alt.value = dom.getAttrib(n, 'alt'); - nl.title.value = dom.getAttrib(n, 'title'); - nl.vspace.value = this.getAttrib(n, 'vspace'); - nl.hspace.value = this.getAttrib(n, 'hspace'); - nl.border.value = this.getAttrib(n, 'border'); - selectByValue(f, 'align', this.getAttrib(n, 'align')); - selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); - nl.style.value = dom.getAttrib(n, 'style'); - nl.id.value = dom.getAttrib(n, 'id'); - nl.dir.value = dom.getAttrib(n, 'dir'); - nl.lang.value = dom.getAttrib(n, 'lang'); - nl.usemap.value = dom.getAttrib(n, 'usemap'); - nl.longdesc.value = dom.getAttrib(n, 'longdesc'); - nl.insert.value = ed.getLang('update'); - - if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) - nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); - - if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) - nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); - - if (ed.settings.inline_styles) { - // Move attribs to styles - if (dom.getAttrib(n, 'align')) - this.updateStyle('align'); - - if (dom.getAttrib(n, 'hspace')) - this.updateStyle('hspace'); - - if (dom.getAttrib(n, 'border')) - this.updateStyle('border'); - - if (dom.getAttrib(n, 'vspace')) - this.updateStyle('vspace'); - } - } - - // Setup browse button - document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); - if (isVisible('srcbrowser')) - document.getElementById('src').style.width = '260px'; - - // Setup browse button - document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); - if (isVisible('overbrowser')) - document.getElementById('onmouseoversrc').style.width = '260px'; - - // Setup browse button - document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); - if (isVisible('outbrowser')) - document.getElementById('onmouseoutsrc').style.width = '260px'; - - // If option enabled default contrain proportions to checked - if (ed.getParam("advimage_constrain_proportions", true)) - f.constrain.checked = true; - - // Check swap image if valid data - if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) - this.setSwapImage(true); - else - this.setSwapImage(false); - - this.changeAppearance(); - this.showPreviewImage(nl.src.value, 1); - }, - - insert : function(file, title) { - var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; - - if (f.src.value === '') { - if (ed.selection.getNode().nodeName == 'IMG') { - ed.dom.remove(ed.selection.getNode()); - ed.execCommand('mceRepaint'); - } - - tinyMCEPopup.close(); - return; - } - - if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { - if (!f.alt.value) { - tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { - if (s) - t.insertAndClose(); - }); - - return; - } - } - - t.insertAndClose(); - }, - - insertAndClose : function() { - var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; - - tinyMCEPopup.restoreSelection(); - - // Fixes crash in Safari - if (tinymce.isWebKit) - ed.getWin().focus(); - - if (!ed.settings.inline_styles) { - args = { - vspace : nl.vspace.value, - hspace : nl.hspace.value, - border : nl.border.value, - align : getSelectValue(f, 'align') - }; - } else { - // Remove deprecated values - args = { - vspace : '', - hspace : '', - border : '', - align : '' - }; - } - - tinymce.extend(args, { - src : nl.src.value, - width : nl.width.value, - height : nl.height.value, - alt : nl.alt.value, - title : nl.title.value, - 'class' : getSelectValue(f, 'class_list'), - style : nl.style.value, - id : nl.id.value, - dir : nl.dir.value, - lang : nl.lang.value, - usemap : nl.usemap.value, - longdesc : nl.longdesc.value - }); - - args.onmouseover = args.onmouseout = ''; - - if (f.onmousemovecheck.checked) { - if (nl.onmouseoversrc.value) - args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; - - if (nl.onmouseoutsrc.value) - args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; - } - - el = ed.selection.getNode(); - - if (el && el.nodeName == 'IMG') { - ed.dom.setAttribs(el, args); - } else { - ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); - ed.dom.setAttribs('__mce_tmp', args); - ed.dom.setAttrib('__mce_tmp', 'id', ''); - ed.undoManager.add(); - } - - tinyMCEPopup.close(); - }, - - getAttrib : function(e, at) { - var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; - - if (ed.settings.inline_styles) { - switch (at) { - case 'align': - if (v = dom.getStyle(e, 'float')) - return v; - - if (v = dom.getStyle(e, 'vertical-align')) - return v; - - break; - - case 'hspace': - v = dom.getStyle(e, 'margin-left') - v2 = dom.getStyle(e, 'margin-right'); - - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'vspace': - v = dom.getStyle(e, 'margin-top') - v2 = dom.getStyle(e, 'margin-bottom'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'border': - v = 0; - - tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { - sv = dom.getStyle(e, 'border-' + sv + '-width'); - - // False or not the same as prev - if (!sv || (sv != v && v !== 0)) { - v = 0; - return false; - } - - if (sv) - v = sv; - }); - - if (v) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - } - } - - if (v = dom.getAttrib(e, at)) - return v; - - return ''; - }, - - setSwapImage : function(st) { - var f = document.forms[0]; - - f.onmousemovecheck.checked = st; - setBrowserDisabled('overbrowser', !st); - setBrowserDisabled('outbrowser', !st); - - if (f.over_list) - f.over_list.disabled = !st; - - if (f.out_list) - f.out_list.disabled = !st; - - f.onmouseoversrc.disabled = !st; - f.onmouseoutsrc.disabled = !st; - }, - - fillClassList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { - cl = []; - - tinymce.each(v.split(';'), function(v) { - var p = v.split('='); - - cl.push({'title' : p[0], 'class' : p[1]}); - }); - } else - cl = tinyMCEPopup.editor.dom.getClasses(); - - if (cl.length > 0) { - lst.options.length = 0; - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - - tinymce.each(cl, function(o) { - lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = window[l]; - lst.options.length = 0; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - resetImageData : function() { - var f = document.forms[0]; - - f.elements.width.value = f.elements.height.value = ''; - }, - - updateImageData : function(img, st) { - var f = document.forms[0]; - - if (!st) { - f.elements.width.value = img.width; - f.elements.height.value = img.height; - } - - this.preloadImg = img; - }, - - changeAppearance : function() { - var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); - - if (img) { - if (ed.getParam('inline_styles')) { - ed.dom.setAttrib(img, 'style', f.style.value); - } else { - img.align = f.align.value; - img.border = f.border.value; - img.hspace = f.hspace.value; - img.vspace = f.vspace.value; - } - } - }, - - changeHeight : function() { - var f = document.forms[0], tp, t = this; - - if (!f.constrain.checked || !t.preloadImg) { - return; - } - - if (f.width.value == "" || f.height.value == "") - return; - - tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; - f.height.value = tp.toFixed(0); - }, - - changeWidth : function() { - var f = document.forms[0], tp, t = this; - - if (!f.constrain.checked || !t.preloadImg) { - return; - } - - if (f.width.value == "" || f.height.value == "") - return; - - tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; - f.width.value = tp.toFixed(0); - }, - - updateStyle : function(ty) { - var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); - - if (tinyMCEPopup.editor.settings.inline_styles) { - // Handle align - if (ty == 'align') { - dom.setStyle(img, 'float', ''); - dom.setStyle(img, 'vertical-align', ''); - - v = getSelectValue(f, 'align'); - if (v) { - if (v == 'left' || v == 'right') - dom.setStyle(img, 'float', v); - else - img.style.verticalAlign = v; - } - } - - // Handle border - if (ty == 'border') { - dom.setStyle(img, 'border', ''); - - v = f.border.value; - if (v || v == '0') { - if (v == '0') - img.style.border = '0'; - else - img.style.border = v + 'px solid black'; - } - } - - // Handle hspace - if (ty == 'hspace') { - dom.setStyle(img, 'marginLeft', ''); - dom.setStyle(img, 'marginRight', ''); - - v = f.hspace.value; - if (v) { - img.style.marginLeft = v + 'px'; - img.style.marginRight = v + 'px'; - } - } - - // Handle vspace - if (ty == 'vspace') { - dom.setStyle(img, 'marginTop', ''); - dom.setStyle(img, 'marginBottom', ''); - - v = f.vspace.value; - if (v) { - img.style.marginTop = v + 'px'; - img.style.marginBottom = v + 'px'; - } - } - - // Merge - dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); - } - }, - - changeMouseMove : function() { - }, - - showPreviewImage : function(u, st) { - if (!u) { - tinyMCEPopup.dom.setHTML('prev', ''); - return; - } - - if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) - this.resetImageData(); - - u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); - - if (!st) - tinyMCEPopup.dom.setHTML('prev', ''); - else - tinyMCEPopup.dom.setHTML('prev', ''); - } -}; - -ImageDialog.preInit(); -tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); +var ImageDialog = { + preInit : function() { + var url; + + tinyMCEPopup.requireLangPack(); + + if (url = tinyMCEPopup.getParam("external_image_list_url")) + document.write(''); + }, + + init : function(ed) { + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(); + + tinyMCEPopup.resizeToInnerSize(); + this.fillClassList('class_list'); + this.fillFileList('src_list', 'tinyMCEImageList'); + this.fillFileList('over_list', 'tinyMCEImageList'); + this.fillFileList('out_list', 'tinyMCEImageList'); + TinyMCE_EditableSelects.init(); + + if (n.nodeName == 'IMG') { + nl.src.value = dom.getAttrib(n, 'src'); + nl.width.value = dom.getAttrib(n, 'width'); + nl.height.value = dom.getAttrib(n, 'height'); + nl.alt.value = dom.getAttrib(n, 'alt'); + nl.title.value = dom.getAttrib(n, 'title'); + nl.vspace.value = this.getAttrib(n, 'vspace'); + nl.hspace.value = this.getAttrib(n, 'hspace'); + nl.border.value = this.getAttrib(n, 'border'); + selectByValue(f, 'align', this.getAttrib(n, 'align')); + selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); + nl.style.value = dom.getAttrib(n, 'style'); + nl.id.value = dom.getAttrib(n, 'id'); + nl.dir.value = dom.getAttrib(n, 'dir'); + nl.lang.value = dom.getAttrib(n, 'lang'); + nl.usemap.value = dom.getAttrib(n, 'usemap'); + nl.longdesc.value = dom.getAttrib(n, 'longdesc'); + nl.insert.value = ed.getLang('update'); + + if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) + nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); + + if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) + nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); + + if (ed.settings.inline_styles) { + // Move attribs to styles + if (dom.getAttrib(n, 'align')) + this.updateStyle('align'); + + if (dom.getAttrib(n, 'hspace')) + this.updateStyle('hspace'); + + if (dom.getAttrib(n, 'border')) + this.updateStyle('border'); + + if (dom.getAttrib(n, 'vspace')) + this.updateStyle('vspace'); + } + } + + // Setup browse button + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '260px'; + + // Setup browse button + document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); + if (isVisible('overbrowser')) + document.getElementById('onmouseoversrc').style.width = '260px'; + + // Setup browse button + document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); + if (isVisible('outbrowser')) + document.getElementById('onmouseoutsrc').style.width = '260px'; + + // If option enabled default contrain proportions to checked + if (ed.getParam("advimage_constrain_proportions", true)) + f.constrain.checked = true; + + // Check swap image if valid data + if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) + this.setSwapImage(true); + else + this.setSwapImage(false); + + this.changeAppearance(); + this.showPreviewImage(nl.src.value, 1); + }, + + insert : function(file, title) { + var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; + + if (f.src.value === '') { + if (ed.selection.getNode().nodeName == 'IMG') { + ed.dom.remove(ed.selection.getNode()); + ed.execCommand('mceRepaint'); + } + + tinyMCEPopup.close(); + return; + } + + if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { + if (!f.alt.value) { + tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { + if (s) + t.insertAndClose(); + }); + + return; + } + } + + t.insertAndClose(); + }, + + insertAndClose : function() { + var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; + + tinyMCEPopup.restoreSelection(); + + // Fixes crash in Safari + if (tinymce.isWebKit) + ed.getWin().focus(); + + if (!ed.settings.inline_styles) { + args = { + vspace : nl.vspace.value, + hspace : nl.hspace.value, + border : nl.border.value, + align : getSelectValue(f, 'align') + }; + } else { + // Remove deprecated values + args = { + vspace : '', + hspace : '', + border : '', + align : '' + }; + } + + tinymce.extend(args, { + src : nl.src.value, + width : nl.width.value, + height : nl.height.value, + alt : nl.alt.value, + title : nl.title.value, + 'class' : getSelectValue(f, 'class_list'), + style : nl.style.value, + id : nl.id.value, + dir : nl.dir.value, + lang : nl.lang.value, + usemap : nl.usemap.value, + longdesc : nl.longdesc.value + }); + + args.onmouseover = args.onmouseout = ''; + + if (f.onmousemovecheck.checked) { + if (nl.onmouseoversrc.value) + args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; + + if (nl.onmouseoutsrc.value) + args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; + } + + el = ed.selection.getNode(); + + if (el && el.nodeName == 'IMG') { + ed.dom.setAttribs(el, args); + } else { + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.dom.setAttribs('__mce_tmp', args); + ed.dom.setAttrib('__mce_tmp', 'id', ''); + ed.undoManager.add(); + } + + tinyMCEPopup.close(); + }, + + getAttrib : function(e, at) { + var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; + + if (ed.settings.inline_styles) { + switch (at) { + case 'align': + if (v = dom.getStyle(e, 'float')) + return v; + + if (v = dom.getStyle(e, 'vertical-align')) + return v; + + break; + + case 'hspace': + v = dom.getStyle(e, 'margin-left') + v2 = dom.getStyle(e, 'margin-right'); + + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'vspace': + v = dom.getStyle(e, 'margin-top') + v2 = dom.getStyle(e, 'margin-bottom'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'border': + v = 0; + + tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { + sv = dom.getStyle(e, 'border-' + sv + '-width'); + + // False or not the same as prev + if (!sv || (sv != v && v !== 0)) { + v = 0; + return false; + } + + if (sv) + v = sv; + }); + + if (v) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + } + } + + if (v = dom.getAttrib(e, at)) + return v; + + return ''; + }, + + setSwapImage : function(st) { + var f = document.forms[0]; + + f.onmousemovecheck.checked = st; + setBrowserDisabled('overbrowser', !st); + setBrowserDisabled('outbrowser', !st); + + if (f.over_list) + f.over_list.disabled = !st; + + if (f.out_list) + f.out_list.disabled = !st; + + f.onmouseoversrc.disabled = !st; + f.onmouseoutsrc.disabled = !st; + }, + + fillClassList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { + cl = []; + + tinymce.each(v.split(';'), function(v) { + var p = v.split('='); + + cl.push({'title' : p[0], 'class' : p[1]}); + }); + } else + cl = tinyMCEPopup.editor.dom.getClasses(); + + if (cl.length > 0) { + lst.options.length = 0; + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + + tinymce.each(cl, function(o) { + lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + lst.options.length = 0; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + resetImageData : function() { + var f = document.forms[0]; + + f.elements.width.value = f.elements.height.value = ''; + }, + + updateImageData : function(img, st) { + var f = document.forms[0]; + + if (!st) { + f.elements.width.value = img.width; + f.elements.height.value = img.height; + } + + this.preloadImg = img; + }, + + changeAppearance : function() { + var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); + + if (img) { + if (ed.getParam('inline_styles')) { + ed.dom.setAttrib(img, 'style', f.style.value); + } else { + img.align = f.align.value; + img.border = f.border.value; + img.hspace = f.hspace.value; + img.vspace = f.vspace.value; + } + } + }, + + changeHeight : function() { + var f = document.forms[0], tp, t = this; + + if (!f.constrain.checked || !t.preloadImg) { + return; + } + + if (f.width.value == "" || f.height.value == "") + return; + + tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; + f.height.value = tp.toFixed(0); + }, + + changeWidth : function() { + var f = document.forms[0], tp, t = this; + + if (!f.constrain.checked || !t.preloadImg) { + return; + } + + if (f.width.value == "" || f.height.value == "") + return; + + tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; + f.width.value = tp.toFixed(0); + }, + + updateStyle : function(ty) { + var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); + + if (tinyMCEPopup.editor.settings.inline_styles) { + // Handle align + if (ty == 'align') { + dom.setStyle(img, 'float', ''); + dom.setStyle(img, 'vertical-align', ''); + + v = getSelectValue(f, 'align'); + if (v) { + if (v == 'left' || v == 'right') + dom.setStyle(img, 'float', v); + else + img.style.verticalAlign = v; + } + } + + // Handle border + if (ty == 'border') { + dom.setStyle(img, 'border', ''); + + v = f.border.value; + if (v || v == '0') { + if (v == '0') + img.style.border = '0'; + else + img.style.border = v + 'px solid black'; + } + } + + // Handle hspace + if (ty == 'hspace') { + dom.setStyle(img, 'marginLeft', ''); + dom.setStyle(img, 'marginRight', ''); + + v = f.hspace.value; + if (v) { + img.style.marginLeft = v + 'px'; + img.style.marginRight = v + 'px'; + } + } + + // Handle vspace + if (ty == 'vspace') { + dom.setStyle(img, 'marginTop', ''); + dom.setStyle(img, 'marginBottom', ''); + + v = f.vspace.value; + if (v) { + img.style.marginTop = v + 'px'; + img.style.marginBottom = v + 'px'; + } + } + + // Merge + dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); + } + }, + + changeMouseMove : function() { + }, + + showPreviewImage : function(u, st) { + if (!u) { + tinyMCEPopup.dom.setHTML('prev', ''); + return; + } + + if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) + this.resetImageData(); + + u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); + + if (!st) + tinyMCEPopup.dom.setHTML('prev', ''); + else + tinyMCEPopup.dom.setHTML('prev', ''); + } +}; + +ImageDialog.preInit(); +tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js old mode 100755 new mode 100644 index f493d196..ef81f78b --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js @@ -1,43 +1,43 @@ -tinyMCE.addI18n('en.advimage_dlg',{ -tab_general:"General", -tab_appearance:"Appearance", -tab_advanced:"Advanced", -general:"General", -title:"Title", -preview:"Preview", -constrain_proportions:"Constrain proportions", -langdir:"Language direction", -langcode:"Language code", -long_desc:"Long description link", -style:"Style", -classes:"Classes", -ltr:"Left to right", -rtl:"Right to left", -id:"Id", -map:"Image map", -swap_image:"Swap image", -alt_image:"Alternative image", -mouseover:"for mouse over", -mouseout:"for mouse out", -misc:"Miscellaneous", -example_img:"Appearance preview image", -missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.", -dialog_title:"Insert/edit image", -src:"Image URL", -alt:"Image description", -list:"Image list", -border:"Border", -dimensions:"Dimensions", -vspace:"Vertical space", -hspace:"Horizontal space", -align:"Alignment", -align_baseline:"Baseline", -align_top:"Top", -align_middle:"Middle", -align_bottom:"Bottom", -align_texttop:"Text top", -align_textbottom:"Text bottom", -align_left:"Left", -align_right:"Right", -image_list:"Image list" +tinyMCE.addI18n('en.advimage_dlg',{ +tab_general:"General", +tab_appearance:"Appearance", +tab_advanced:"Advanced", +general:"General", +title:"Title", +preview:"Preview", +constrain_proportions:"Constrain proportions", +langdir:"Language direction", +langcode:"Language code", +long_desc:"Long description link", +style:"Style", +classes:"Classes", +ltr:"Left to right", +rtl:"Right to left", +id:"Id", +map:"Image map", +swap_image:"Swap image", +alt_image:"Alternative image", +mouseover:"for mouse over", +mouseout:"for mouse out", +misc:"Miscellaneous", +example_img:"Appearance preview image", +missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.", +dialog_title:"Insert/edit image", +src:"Image URL", +alt:"Image description", +list:"Image list", +border:"Border", +dimensions:"Dimensions", +vspace:"Vertical space", +hspace:"Horizontal space", +align:"Alignment", +align_baseline:"Baseline", +align_top:"Top", +align_middle:"Middle", +align_bottom:"Bottom", +align_texttop:"Text top", +align_textbottom:"Text bottom", +align_left:"Left", +align_right:"Right", +image_list:"Image list" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/css/advlink.css b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/css/advlink.css old mode 100755 new mode 100644 index 14364316..66c65493 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/css/advlink.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/css/advlink.css @@ -1,8 +1,8 @@ -.mceLinkList, .mceAnchorList, #targetlist {width:280px;} -.mceActionPanel {margin-top:7px;} -.panel_wrapper div.current {height:320px;} -#classlist, #title, #href {width:280px;} -#popupurl, #popupname {width:200px;} -#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} -#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} -#events_panel input {width:200px;} +.mceLinkList, .mceAnchorList, #targetlist {width:280px;} +.mceActionPanel {margin-top:7px;} +.panel_wrapper div.current {height:320px;} +#classlist, #title, #href {width:280px;} +#popupurl, #popupname {width:200px;} +#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} +#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} +#events_panel input {width:200px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js old mode 100755 new mode 100644 index 14e46a76..32ea8f3d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js @@ -1,61 +1,61 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.AdvancedLinkPlugin', { - init : function(ed, url) { - this.editor = ed; - - // Register commands - ed.addCommand('mceAdvLink', function() { - var se = ed.selection; - - // No selection and not in link - if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) - return; - - ed.windowManager.open({ - file : url + '/link.htm', - width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)), - height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('link', { - title : 'advlink.link_desc', - cmd : 'mceAdvLink' - }); - - ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink'); - - ed.onNodeChange.add(function(ed, cm, n, co) { - cm.setDisabled('link', co && n.nodeName != 'A'); - cm.setActive('link', n.nodeName == 'A' && !n.name); - }); - }, - - getInfo : function() { - return { - longname : 'Advanced link', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.AdvancedLinkPlugin', { + init : function(ed, url) { + this.editor = ed; + + // Register commands + ed.addCommand('mceAdvLink', function() { + var se = ed.selection; + + // No selection and not in link + if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) + return; + + ed.windowManager.open({ + file : url + '/link.htm', + width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)), + height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('link', { + title : 'advlink.link_desc', + cmd : 'mceAdvLink' + }); + + ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink'); + + ed.onNodeChange.add(function(ed, cm, n, co) { + cm.setDisabled('link', co && n.nodeName != 'A'); + cm.setActive('link', n.nodeName == 'A' && !n.name); + }); + }, + + getInfo : function() { + return { + longname : 'Advanced link', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/js/advlink.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/js/advlink.js old mode 100755 new mode 100644 index b78e82f7..6fa37e86 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/js/advlink.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/js/advlink.js @@ -1,528 +1,528 @@ -/* Functions for the advlink plugin popup */ - -tinyMCEPopup.requireLangPack(); - -var templates = { - "window.open" : "window.open('${url}','${target}','${options}')" -}; - -function preinit() { - var url; - - if (url = tinyMCEPopup.getParam("external_link_list_url")) - document.write(''); -} - -function changeClass() { - var f = document.forms[0]; - - f.classes.value = getSelectValue(f, 'classlist'); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var formObj = document.forms[0]; - var inst = tinyMCEPopup.editor; - var elm = inst.selection.getNode(); - var action = "insert"; - var html; - - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); - document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); - document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); - document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); - document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); - - // Link list - html = getLinkListHTML('linklisthref','href'); - if (html == "") - document.getElementById("linklisthrefrow").style.display = 'none'; - else - document.getElementById("linklisthrefcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '260px'; - - if (isVisible('popupurlbrowser')) - document.getElementById('popupurl').style.width = '180px'; - - elm = inst.dom.getParent(elm, "A"); - if (elm != null && elm.nodeName == "A") - action = "update"; - - formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); - - setPopupControlsDisabled(true); - - if (action == "update") { - var href = inst.dom.getAttrib(elm, 'href'); - var onclick = inst.dom.getAttrib(elm, 'onclick'); - - // Setup form data - setFormValue('href', href); - setFormValue('title', inst.dom.getAttrib(elm, 'title')); - setFormValue('id', inst.dom.getAttrib(elm, 'id')); - setFormValue('style', inst.dom.getAttrib(elm, "style")); - setFormValue('rel', inst.dom.getAttrib(elm, 'rel')); - setFormValue('rev', inst.dom.getAttrib(elm, 'rev')); - setFormValue('charset', inst.dom.getAttrib(elm, 'charset')); - setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang')); - setFormValue('dir', inst.dom.getAttrib(elm, 'dir')); - setFormValue('lang', inst.dom.getAttrib(elm, 'lang')); - setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('type', inst.dom.getAttrib(elm, 'type')); - setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus')); - setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur')); - setFormValue('onclick', onclick); - setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick')); - setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown')); - setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup')); - setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover')); - setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove')); - setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout')); - setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress')); - setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown')); - setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup')); - setFormValue('target', inst.dom.getAttrib(elm, 'target')); - setFormValue('classes', inst.dom.getAttrib(elm, 'class')); - - // Parse onclick data - if (onclick != null && onclick.indexOf('window.open') != -1) - parseWindowOpen(onclick); - else - parseFunction(onclick); - - // Select by the values - selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir')); - selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel')); - selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev')); - selectByValue(formObj, 'linklisthref', href); - - if (href.charAt(0) == '#') - selectByValue(formObj, 'anchorlist', href); - - addClassesToList('classlist', 'advlink_styles'); - - selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true); - selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true); - } else - addClassesToList('classlist', 'advlink_styles'); -} - -function checkPrefix(n) { - if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) - n.value = 'mailto:' + n.value; - - if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) - n.value = 'http://' + n.value; -} - -function setFormValue(name, value) { - document.forms[0].elements[name].value = value; -} - -function parseWindowOpen(onclick) { - var formObj = document.forms[0]; - - // Preprocess center code - if (onclick.indexOf('return false;') != -1) { - formObj.popupreturn.checked = true; - onclick = onclick.replace('return false;', ''); - } else - formObj.popupreturn.checked = false; - - var onClickData = parseLink(onclick); - - if (onClickData != null) { - formObj.ispopup.checked = true; - setPopupControlsDisabled(false); - - var onClickWindowOptions = parseOptions(onClickData['options']); - var url = onClickData['url']; - - formObj.popupname.value = onClickData['target']; - formObj.popupurl.value = url; - formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); - formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); - - formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); - formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); - - if (formObj.popupleft.value.indexOf('screen') != -1) - formObj.popupleft.value = "c"; - - if (formObj.popuptop.value.indexOf('screen') != -1) - formObj.popuptop.value = "c"; - - formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; - formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; - formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; - formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; - formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; - formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; - formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; - - buildOnClick(); - } -} - -function parseFunction(onclick) { - var formObj = document.forms[0]; - var onClickData = parseLink(onclick); - - // TODO: Add stuff here -} - -function getOption(opts, name) { - return typeof(opts[name]) == "undefined" ? "" : opts[name]; -} - -function setPopupControlsDisabled(state) { - var formObj = document.forms[0]; - - formObj.popupname.disabled = state; - formObj.popupurl.disabled = state; - formObj.popupwidth.disabled = state; - formObj.popupheight.disabled = state; - formObj.popupleft.disabled = state; - formObj.popuptop.disabled = state; - formObj.popuplocation.disabled = state; - formObj.popupscrollbars.disabled = state; - formObj.popupmenubar.disabled = state; - formObj.popupresizable.disabled = state; - formObj.popuptoolbar.disabled = state; - formObj.popupstatus.disabled = state; - formObj.popupreturn.disabled = state; - formObj.popupdependent.disabled = state; - - setBrowserDisabled('popupurlbrowser', state); -} - -function parseLink(link) { - link = link.replace(new RegExp(''', 'g'), "'"); - - var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); - - // Is function name a template function - var template = templates[fnName]; - if (template) { - // Build regexp - var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); - var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; - var replaceStr = ""; - for (var i=0; i'); - for (var i=0; i'; - html += ''; - - for (i=0; i' + name + ''; - } - - html += ''; - - return html; -} - -function insertAction() { - var inst = tinyMCEPopup.editor; - var elm, elementArray, i; - - elm = inst.selection.getNode(); - checkPrefix(document.forms[0].href); - - elm = inst.dom.getParent(elm, "A"); - - // Remove element if there is no href - if (!document.forms[0].href.value) { - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - i = inst.selection.getBookmark(); - inst.dom.remove(elm, 1); - inst.selection.moveToBookmark(i); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - return; - } - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - - // Create new anchor elements - if (elm == null) { - inst.getDoc().execCommand("unlink", false, null); - tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); - - elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); - for (i=0; i' + tinyMCELinkList[i][0] + ''; - - html += ''; - - return html; - - // tinyMCE.debug('-- image list start --', html, '-- image list end --'); -} - -function getTargetListHTML(elm_id, target_form_element) { - var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';'); - var html = ''; - - html += ''; - - return html; -} - -// While loading -preinit(); -tinyMCEPopup.onInit.add(init); +/* Functions for the advlink plugin popup */ + +tinyMCEPopup.requireLangPack(); + +var templates = { + "window.open" : "window.open('${url}','${target}','${options}')" +}; + +function preinit() { + var url; + + if (url = tinyMCEPopup.getParam("external_link_list_url")) + document.write(''); +} + +function changeClass() { + var f = document.forms[0]; + + f.classes.value = getSelectValue(f, 'classlist'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCEPopup.editor; + var elm = inst.selection.getNode(); + var action = "insert"; + var html; + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); + document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); + document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); + document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); + document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); + + // Link list + html = getLinkListHTML('linklisthref','href'); + if (html == "") + document.getElementById("linklisthrefrow").style.display = 'none'; + else + document.getElementById("linklisthrefcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '260px'; + + if (isVisible('popupurlbrowser')) + document.getElementById('popupurl').style.width = '180px'; + + elm = inst.dom.getParent(elm, "A"); + if (elm != null && elm.nodeName == "A") + action = "update"; + + formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); + + setPopupControlsDisabled(true); + + if (action == "update") { + var href = inst.dom.getAttrib(elm, 'href'); + var onclick = inst.dom.getAttrib(elm, 'onclick'); + + // Setup form data + setFormValue('href', href); + setFormValue('title', inst.dom.getAttrib(elm, 'title')); + setFormValue('id', inst.dom.getAttrib(elm, 'id')); + setFormValue('style', inst.dom.getAttrib(elm, "style")); + setFormValue('rel', inst.dom.getAttrib(elm, 'rel')); + setFormValue('rev', inst.dom.getAttrib(elm, 'rev')); + setFormValue('charset', inst.dom.getAttrib(elm, 'charset')); + setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang')); + setFormValue('dir', inst.dom.getAttrib(elm, 'dir')); + setFormValue('lang', inst.dom.getAttrib(elm, 'lang')); + setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('type', inst.dom.getAttrib(elm, 'type')); + setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', onclick); + setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup')); + setFormValue('target', inst.dom.getAttrib(elm, 'target')); + setFormValue('classes', inst.dom.getAttrib(elm, 'class')); + + // Parse onclick data + if (onclick != null && onclick.indexOf('window.open') != -1) + parseWindowOpen(onclick); + else + parseFunction(onclick); + + // Select by the values + selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir')); + selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel')); + selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev')); + selectByValue(formObj, 'linklisthref', href); + + if (href.charAt(0) == '#') + selectByValue(formObj, 'anchorlist', href); + + addClassesToList('classlist', 'advlink_styles'); + + selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true); + selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true); + } else + addClassesToList('classlist', 'advlink_styles'); +} + +function checkPrefix(n) { + if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) + n.value = 'http://' + n.value; +} + +function setFormValue(name, value) { + document.forms[0].elements[name].value = value; +} + +function parseWindowOpen(onclick) { + var formObj = document.forms[0]; + + // Preprocess center code + if (onclick.indexOf('return false;') != -1) { + formObj.popupreturn.checked = true; + onclick = onclick.replace('return false;', ''); + } else + formObj.popupreturn.checked = false; + + var onClickData = parseLink(onclick); + + if (onClickData != null) { + formObj.ispopup.checked = true; + setPopupControlsDisabled(false); + + var onClickWindowOptions = parseOptions(onClickData['options']); + var url = onClickData['url']; + + formObj.popupname.value = onClickData['target']; + formObj.popupurl.value = url; + formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); + formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); + + formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); + formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); + + if (formObj.popupleft.value.indexOf('screen') != -1) + formObj.popupleft.value = "c"; + + if (formObj.popuptop.value.indexOf('screen') != -1) + formObj.popuptop.value = "c"; + + formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; + formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; + formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; + formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; + formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; + formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; + formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; + + buildOnClick(); + } +} + +function parseFunction(onclick) { + var formObj = document.forms[0]; + var onClickData = parseLink(onclick); + + // TODO: Add stuff here +} + +function getOption(opts, name) { + return typeof(opts[name]) == "undefined" ? "" : opts[name]; +} + +function setPopupControlsDisabled(state) { + var formObj = document.forms[0]; + + formObj.popupname.disabled = state; + formObj.popupurl.disabled = state; + formObj.popupwidth.disabled = state; + formObj.popupheight.disabled = state; + formObj.popupleft.disabled = state; + formObj.popuptop.disabled = state; + formObj.popuplocation.disabled = state; + formObj.popupscrollbars.disabled = state; + formObj.popupmenubar.disabled = state; + formObj.popupresizable.disabled = state; + formObj.popuptoolbar.disabled = state; + formObj.popupstatus.disabled = state; + formObj.popupreturn.disabled = state; + formObj.popupdependent.disabled = state; + + setBrowserDisabled('popupurlbrowser', state); +} + +function parseLink(link) { + link = link.replace(new RegExp(''', 'g'), "'"); + + var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); + + // Is function name a template function + var template = templates[fnName]; + if (template) { + // Build regexp + var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); + var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; + var replaceStr = ""; + for (var i=0; i'); + for (var i=0; i'; + html += ''; + + for (i=0; i' + name + ''; + } + + html += ''; + + return html; +} + +function insertAction() { + var inst = tinyMCEPopup.editor; + var elm, elementArray, i; + + elm = inst.selection.getNode(); + checkPrefix(document.forms[0].href); + + elm = inst.dom.getParent(elm, "A"); + + // Remove element if there is no href + if (!document.forms[0].href.value) { + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + i = inst.selection.getBookmark(); + inst.dom.remove(elm, 1); + inst.selection.moveToBookmark(i); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + return; + } + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (elm == null) { + inst.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); + + elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); + for (i=0; i' + tinyMCELinkList[i][0] + ''; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +function getTargetListHTML(elm_id, target_form_element) { + var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';'); + var html = ''; + + html += ''; + + return html; +} + +// While loading +preinit(); +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js old mode 100755 new mode 100644 index c71ffbd0..8ef9c792 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js @@ -1,52 +1,52 @@ -tinyMCE.addI18n('en.advlink_dlg',{ -title:"Insert/edit link", -url:"Link URL", -target:"Target", -titlefield:"Title", -is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", -is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", -list:"Link list", -general_tab:"General", -popup_tab:"Popup", -events_tab:"Events", -advanced_tab:"Advanced", -general_props:"General properties", -popup_props:"Popup properties", -event_props:"Events", -advanced_props:"Advanced properties", -popup_opts:"Options", -anchor_names:"Anchors", -target_same:"Open in this window / frame", -target_parent:"Open in parent window / frame", -target_top:"Open in top frame (replaces all frames)", -target_blank:"Open in new window", -popup:"Javascript popup", -popup_url:"Popup URL", -popup_name:"Window name", -popup_return:"Insert 'return false'", -popup_scrollbars:"Show scrollbars", -popup_statusbar:"Show status bar", -popup_toolbar:"Show toolbars", -popup_menubar:"Show menu bar", -popup_location:"Show location bar", -popup_resizable:"Make window resizable", -popup_dependent:"Dependent (Mozilla/Firefox only)", -popup_size:"Size", -popup_position:"Position (X/Y)", -id:"Id", -style:"Style", -classes:"Classes", -target_name:"Target name", -langdir:"Language direction", -target_langcode:"Target language", -langcode:"Language code", -encoding:"Target character encoding", -mime:"Target MIME type", -rel:"Relationship page to target", -rev:"Relationship target to page", -tabindex:"Tabindex", -accesskey:"Accesskey", -ltr:"Left to right", -rtl:"Right to left", -link_list:"Link list" +tinyMCE.addI18n('en.advlink_dlg',{ +title:"Insert/edit link", +url:"Link URL", +target:"Target", +titlefield:"Title", +is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", +is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", +list:"Link list", +general_tab:"General", +popup_tab:"Popup", +events_tab:"Events", +advanced_tab:"Advanced", +general_props:"General properties", +popup_props:"Popup properties", +event_props:"Events", +advanced_props:"Advanced properties", +popup_opts:"Options", +anchor_names:"Anchors", +target_same:"Open in this window / frame", +target_parent:"Open in parent window / frame", +target_top:"Open in top frame (replaces all frames)", +target_blank:"Open in new window", +popup:"Javascript popup", +popup_url:"Popup URL", +popup_name:"Window name", +popup_return:"Insert 'return false'", +popup_scrollbars:"Show scrollbars", +popup_statusbar:"Show status bar", +popup_toolbar:"Show toolbars", +popup_menubar:"Show menu bar", +popup_location:"Show location bar", +popup_resizable:"Make window resizable", +popup_dependent:"Dependent (Mozilla/Firefox only)", +popup_size:"Size", +popup_position:"Position (X/Y)", +id:"Id", +style:"Style", +classes:"Classes", +target_name:"Target name", +langdir:"Language direction", +target_langcode:"Target language", +langcode:"Language code", +encoding:"Target character encoding", +mime:"Target MIME type", +rel:"Relationship page to target", +rev:"Relationship target to page", +tabindex:"Tabindex", +accesskey:"Accesskey", +ltr:"Left to right", +rtl:"Right to left", +link_list:"Link list" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/link.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/link.htm old mode 100755 new mode 100644 index 876669c6..0b0e0bcd --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/link.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlink/link.htm @@ -1,333 +1,333 @@ - - - - {#advlink_dlg.title} - - - - - - - - -
    - - -
    -
    -
    - {#advlink_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    - -
    -
    -
    - - - -
    -
    - {#advlink_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    -
    -
    -
    - -
    -
    - {#advlink_dlg.event_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    -
    - - + + + + {#advlink_dlg.title} + + + + + + + + +
    + + +
    +
    +
    + {#advlink_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    + +
    +
    +
    + + + +
    +
    + {#advlink_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + {#advlink_dlg.event_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js old mode 100755 new mode 100644 index a61887a9..7a665fa4 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js @@ -1,154 +1,154 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var each = tinymce.each; - - tinymce.create('tinymce.plugins.AdvListPlugin', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - function buildFormats(str) { - var formats = []; - - each(str.split(/,/), function(type) { - formats.push({ - title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')), - styles : { - listStyleType : type == 'default' ? '' : type - } - }); - }); - - return formats; - }; - - // Setup number formats from config or default - t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"); - t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square"); - }, - - createControl: function(name, cm) { - var t = this, btn, format; - - if (name == 'numlist' || name == 'bullist') { - // Default to first item if it's a default item - if (t[name][0].title == 'advlist.def') - format = t[name][0]; - - function hasFormat(node, format) { - var state = true; - - each(format.styles, function(value, name) { - // Format doesn't match - if (t.editor.dom.getStyle(node, name) != value) { - state = false; - return false; - } - }); - - return state; - }; - - function applyListFormat() { - var list, ed = t.editor, dom = ed.dom, sel = ed.selection; - - // Check for existing list element - list = dom.getParent(sel.getNode(), 'ol,ul'); - - // Switch/add list type if needed - if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format)) - ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList'); - - // Append styles to new list element - if (format) { - list = dom.getParent(sel.getNode(), 'ol,ul'); - - if (list) { - dom.setStyles(list, format.styles); - list.removeAttribute('_mce_style'); - } - } - }; - - btn = cm.createSplitButton(name, { - title : 'advanced.' + name + '_desc', - 'class' : 'mce_' + name, - onclick : function() { - applyListFormat(); - } - }); - - btn.onRenderMenu.add(function(btn, menu) { - menu.onShowMenu.add(function() { - var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList; - - if (list || format) { - fmtList = t[name]; - - // Unselect existing items - each(menu.items, function(item) { - var state = true; - - item.setSelected(0); - - if (list && !item.isDisabled()) { - each(fmtList, function(fmt) { - if (fmt.id == item.id) { - if (!hasFormat(list, fmt)) { - state = false; - return false; - } - } - }); - - if (state) - item.setSelected(1); - } - }); - - // Select the current format - if (!list) - menu.items[format.id].setSelected(1); - } - }); - - menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle'}).setDisabled(1); - - each(t[name], function(item) { - item.id = t.editor.dom.uniqueId(); - - menu.add({id : item.id, title : item.title, onclick : function() { - format = item; - applyListFormat(); - }}); - }); - }); - - return btn; - } - }, - - getInfo : function() { - return { - longname : 'Advanced lists', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var each = tinymce.each; + + tinymce.create('tinymce.plugins.AdvListPlugin', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + function buildFormats(str) { + var formats = []; + + each(str.split(/,/), function(type) { + formats.push({ + title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')), + styles : { + listStyleType : type == 'default' ? '' : type + } + }); + }); + + return formats; + }; + + // Setup number formats from config or default + t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"); + t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square"); + }, + + createControl: function(name, cm) { + var t = this, btn, format; + + if (name == 'numlist' || name == 'bullist') { + // Default to first item if it's a default item + if (t[name][0].title == 'advlist.def') + format = t[name][0]; + + function hasFormat(node, format) { + var state = true; + + each(format.styles, function(value, name) { + // Format doesn't match + if (t.editor.dom.getStyle(node, name) != value) { + state = false; + return false; + } + }); + + return state; + }; + + function applyListFormat() { + var list, ed = t.editor, dom = ed.dom, sel = ed.selection; + + // Check for existing list element + list = dom.getParent(sel.getNode(), 'ol,ul'); + + // Switch/add list type if needed + if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format)) + ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList'); + + // Append styles to new list element + if (format) { + list = dom.getParent(sel.getNode(), 'ol,ul'); + + if (list) { + dom.setStyles(list, format.styles); + list.removeAttribute('_mce_style'); + } + } + }; + + btn = cm.createSplitButton(name, { + title : 'advanced.' + name + '_desc', + 'class' : 'mce_' + name, + onclick : function() { + applyListFormat(); + } + }); + + btn.onRenderMenu.add(function(btn, menu) { + menu.onShowMenu.add(function() { + var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList; + + if (list || format) { + fmtList = t[name]; + + // Unselect existing items + each(menu.items, function(item) { + var state = true; + + item.setSelected(0); + + if (list && !item.isDisabled()) { + each(fmtList, function(fmt) { + if (fmt.id == item.id) { + if (!hasFormat(list, fmt)) { + state = false; + return false; + } + } + }); + + if (state) + item.setSelected(1); + } + }); + + // Select the current format + if (!list) + menu.items[format.id].setSelected(1); + } + }); + + menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + + each(t[name], function(item) { + item.id = t.editor.dom.uniqueId(); + + menu.add({id : item.id, title : item.title, onclick : function() { + format = item; + applyListFormat(); + }}); + }); + }); + + return btn; + } + }, + + getInfo : function() { + return { + longname : 'Advanced lists', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js old mode 100755 new mode 100644 index d8cc1120..edf6e65e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js @@ -1,422 +1,422 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - * - * Adds auto-save capability to the TinyMCE text editor to rescue content - * inadvertently lost. This plugin was originally developed by Speednet - * and that project can be found here: http://code.google.com/p/tinyautosave/ - * - * TECHNOLOGY DISCUSSION: - * - * The plugin attempts to use the most advanced features available in the current browser to save - * as much content as possible. There are a total of four different methods used to autosave the - * content. In order of preference, they are: - * - * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain - * on the client computer. Data stored in the localStorage area has no expiration date, so we must - * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed - * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As - * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7, - * localStorage is stored in the following folder: - * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder] - * - * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage, - * except it is designed to expire after a certain amount of time. Because the specification - * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and - * manage the expiration ourselves. sessionStorage has similar storage characteristics to - * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will - * certainly change as Firefox continues getting better at HTML 5 adoption.) - * - * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a - * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client - * computer. The feature is available for IE 5+, which makes it available for every version of IE - * supported by TinyMCE. The content is persistent across browser restarts and expires on the - * date/time specified, just like a cookie. However, the data is not cleared when the user clears - * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData, - * like other Microsoft IE browser technologies, is implemented as a behavior attached to a - * specific DOM object, so in this case we attach the behavior to the same DOM element that the - * TinyMCE editor instance is attached to. - */ - -(function(tinymce) { - // Setup constants to help the compressor to reduce script size - var PLUGIN_NAME = 'autosave', - RESTORE_DRAFT = 'restoredraft', - TRUE = true, - undefined, - unloadHandlerAdded, - Dispatcher = tinymce.util.Dispatcher; - - /** - * This plugin adds auto-save capability to the TinyMCE text editor to rescue content - * inadvertently lost. By using localStorage. - * - * @class tinymce.plugins.AutoSave - */ - tinymce.create('tinymce.plugins.AutoSave', { - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @method init - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init : function(ed, url) { - var self = this, settings = ed.settings; - - self.editor = ed; - - // Parses the specified time string into a milisecond number 10m, 10s etc. - function parseTime(time) { - var multipels = { - s : 1000, - m : 60000 - }; - - time = /^(\d+)([ms]?)$/.exec('' + time); - - return (time[2] ? multipels[time[2]] : 1) * parseInt(time); - }; - - // Default config - tinymce.each({ - ask_before_unload : TRUE, - interval : '30s', - retention : '20m', - minlength : 50 - }, function(value, key) { - key = PLUGIN_NAME + '_' + key; - - if (settings[key] === undefined) - settings[key] = value; - }); - - // Parse times - settings.autosave_interval = parseTime(settings.autosave_interval); - settings.autosave_retention = parseTime(settings.autosave_retention); - - // Register restore button - ed.addButton(RESTORE_DRAFT, { - title : PLUGIN_NAME + ".restore_content", - onclick : function() { - if (ed.getContent().replace(/\s| |<\/?p[^>]*>|]*>/gi, "").length > 0) { - // Show confirm dialog if the editor isn't empty - ed.windowManager.confirm( - PLUGIN_NAME + ".warning_message", - function(ok) { - if (ok) - self.restoreDraft(); - } - ); - } else - self.restoreDraft(); - } - }); - - // Enable/disable restoredraft button depending on if there is a draft stored or not - ed.onNodeChange.add(function() { - var controlManager = ed.controlManager; - - if (controlManager.get(RESTORE_DRAFT)) - controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft()); - }); - - ed.onInit.add(function() { - // Check if the user added the restore button, then setup auto storage logic - if (ed.controlManager.get(RESTORE_DRAFT)) { - // Setup storage engine - self.setupStorage(ed); - - // Auto save contents each interval time - setInterval(function() { - self.storeDraft(); - ed.nodeChanged(); - }, settings.autosave_interval); - } - }); - - /** - * This event gets fired when a draft is stored to local storage. - * - * @event onStoreDraft - * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. - * @param {Object} draft Draft object containing the HTML contents of the editor. - */ - self.onStoreDraft = new Dispatcher(self); - - /** - * This event gets fired when a draft is restored from local storage. - * - * @event onStoreDraft - * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. - * @param {Object} draft Draft object containing the HTML contents of the editor. - */ - self.onRestoreDraft = new Dispatcher(self); - - /** - * This event gets fired when a draft removed/expired. - * - * @event onRemoveDraft - * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. - * @param {Object} draft Draft object containing the HTML contents of the editor. - */ - self.onRemoveDraft = new Dispatcher(self); - - // Add ask before unload dialog only add one unload handler - if (!unloadHandlerAdded) { - window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler; - unloadHandlerAdded = TRUE; - } - }, - - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @method getInfo - * @return {Object} Name/value array containing information about the plugin. - */ - getInfo : function() { - return { - longname : 'Auto save', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - /** - * Returns an expiration date UTC string. - * - * @method getExpDate - * @return {String} Expiration date UTC string. - */ - getExpDate : function() { - return new Date( - new Date().getTime() + this.editor.settings.autosave_retention - ).toUTCString(); - }, - - /** - * This method will setup the storage engine. If the browser has support for it. - * - * @method setupStorage - */ - setupStorage : function(ed) { - var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK"; - - self.key = PLUGIN_NAME + ed.id; - - // Loop though each storage engine type until we find one that works - tinymce.each([ - function() { - // Try HTML5 Local Storage - if (localStorage) { - localStorage.setItem(testKey, testVal); - - if (localStorage.getItem(testKey) === testVal) { - localStorage.removeItem(testKey); - - return localStorage; - } - } - }, - - function() { - // Try HTML5 Session Storage - if (sessionStorage) { - sessionStorage.setItem(testKey, testVal); - - if (sessionStorage.getItem(testKey) === testVal) { - sessionStorage.removeItem(testKey); - - return sessionStorage; - } - } - }, - - function() { - // Try IE userData - if (tinymce.isIE) { - ed.getElement().style.behavior = "url('#default#userData')"; - - // Fake localStorage on old IE - return { - autoExpires : TRUE, - - setItem : function(key, value) { - var userDataElement = ed.getElement(); - - userDataElement.setAttribute(key, value); - userDataElement.expires = self.getExpDate(); - userDataElement.save("TinyMCE"); - }, - - getItem : function(key) { - var userDataElement = ed.getElement(); - - userDataElement.load("TinyMCE"); - - return userDataElement.getAttribute(key); - }, - - removeItem : function(key) { - ed.getElement().removeAttribute(key); - } - }; - } - }, - ], function(setup) { - // Try executing each function to find a suitable storage engine - try { - self.storage = setup(); - - if (self.storage) - return false; - } catch (e) { - // Ignore - } - }); - }, - - /** - * This method will store the current contents in the the storage engine. - * - * @method storeDraft - */ - storeDraft : function() { - var self = this, storage = self.storage, editor = self.editor, expires, content; - - // Is the contents dirty - if (storage) { - // If there is no existing key and the contents hasn't been changed since - // it's original value then there is no point in saving a draft - if (!storage.getItem(self.key) && !editor.isDirty()) - return; - - // Store contents if the contents if longer than the minlength of characters - content = editor.getContent(); - if (content.length > editor.settings.autosave_minlength) { - expires = self.getExpDate(); - - // Store expiration date if needed IE userData has auto expire built in - if (!self.storage.autoExpires) - self.storage.setItem(self.key + "_expires", expires); - - self.storage.setItem(self.key, content); - self.onStoreDraft.dispatch(self, { - expires : expires, - content : content - }); - } - } - }, - - /** - * This method will restore the contents from the storage engine back to the editor. - * - * @method restoreDraft - */ - restoreDraft : function() { - var self = this, storage = self.storage; - - if (storage) { - content = storage.getItem(self.key); - - if (content) { - self.editor.setContent(content); - self.onRestoreDraft.dispatch(self, { - content : content - }); - } - } - }, - - /** - * This method will return true/false if there is a local storage draft available. - * - * @method hasDraft - * @return {boolean} true/false state if there is a local draft. - */ - hasDraft : function() { - var self = this, storage = self.storage, expDate, exists; - - if (storage) { - // Does the item exist at all - exists = !!storage.getItem(self.key); - if (exists) { - // Storage needs autoexpire - if (!self.storage.autoExpires) { - expDate = new Date(storage.getItem(self.key + "_expires")); - - // Contents hasn't expired - if (new Date().getTime() < expDate.getTime()) - return TRUE; - - // Remove it if it has - self.removeDraft(); - } else - return TRUE; - } - } - - return false; - }, - - /** - * Removes the currently stored draft. - * - * @method removeDraft - */ - removeDraft : function() { - var self = this, storage = self.storage, key = self.key, content; - - if (storage) { - // Get current contents and remove the existing draft - content = storage.getItem(key); - storage.removeItem(key); - storage.removeItem(key + "_expires"); - - // Dispatch remove event if we had any contents - if (content) { - self.onRemoveDraft.dispatch(self, { - content : content - }); - } - } - }, - - "static" : { - // Internal unload handler will be called before the page is unloaded - _beforeUnloadHandler : function(e) { - var msg; - - tinymce.each(tinyMCE.editors, function(ed) { - // Store a draft for each editor instance - if (ed.plugins.autosave) - ed.plugins.autosave.storeDraft(); - - // Never ask in fullscreen mode - if (ed.getParam("fullscreen_is_enabled")) - return; - - // Setup a return message if the editor is dirty - if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload")) - msg = ed.getLang("autosave.unload_msg"); - }); - - return msg; - } - } - }); - - tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave); -})(tinymce); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + * + * Adds auto-save capability to the TinyMCE text editor to rescue content + * inadvertently lost. This plugin was originally developed by Speednet + * and that project can be found here: http://code.google.com/p/tinyautosave/ + * + * TECHNOLOGY DISCUSSION: + * + * The plugin attempts to use the most advanced features available in the current browser to save + * as much content as possible. There are a total of four different methods used to autosave the + * content. In order of preference, they are: + * + * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain + * on the client computer. Data stored in the localStorage area has no expiration date, so we must + * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed + * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As + * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7, + * localStorage is stored in the following folder: + * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder] + * + * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage, + * except it is designed to expire after a certain amount of time. Because the specification + * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and + * manage the expiration ourselves. sessionStorage has similar storage characteristics to + * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will + * certainly change as Firefox continues getting better at HTML 5 adoption.) + * + * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a + * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client + * computer. The feature is available for IE 5+, which makes it available for every version of IE + * supported by TinyMCE. The content is persistent across browser restarts and expires on the + * date/time specified, just like a cookie. However, the data is not cleared when the user clears + * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData, + * like other Microsoft IE browser technologies, is implemented as a behavior attached to a + * specific DOM object, so in this case we attach the behavior to the same DOM element that the + * TinyMCE editor instance is attached to. + */ + +(function(tinymce) { + // Setup constants to help the compressor to reduce script size + var PLUGIN_NAME = 'autosave', + RESTORE_DRAFT = 'restoredraft', + TRUE = true, + undefined, + unloadHandlerAdded, + Dispatcher = tinymce.util.Dispatcher; + + /** + * This plugin adds auto-save capability to the TinyMCE text editor to rescue content + * inadvertently lost. By using localStorage. + * + * @class tinymce.plugins.AutoSave + */ + tinymce.create('tinymce.plugins.AutoSave', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @method init + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed, url) { + var self = this, settings = ed.settings; + + self.editor = ed; + + // Parses the specified time string into a milisecond number 10m, 10s etc. + function parseTime(time) { + var multipels = { + s : 1000, + m : 60000 + }; + + time = /^(\d+)([ms]?)$/.exec('' + time); + + return (time[2] ? multipels[time[2]] : 1) * parseInt(time); + }; + + // Default config + tinymce.each({ + ask_before_unload : TRUE, + interval : '30s', + retention : '20m', + minlength : 50 + }, function(value, key) { + key = PLUGIN_NAME + '_' + key; + + if (settings[key] === undefined) + settings[key] = value; + }); + + // Parse times + settings.autosave_interval = parseTime(settings.autosave_interval); + settings.autosave_retention = parseTime(settings.autosave_retention); + + // Register restore button + ed.addButton(RESTORE_DRAFT, { + title : PLUGIN_NAME + ".restore_content", + onclick : function() { + if (ed.getContent().replace(/\s| |<\/?p[^>]*>|]*>/gi, "").length > 0) { + // Show confirm dialog if the editor isn't empty + ed.windowManager.confirm( + PLUGIN_NAME + ".warning_message", + function(ok) { + if (ok) + self.restoreDraft(); + } + ); + } else + self.restoreDraft(); + } + }); + + // Enable/disable restoredraft button depending on if there is a draft stored or not + ed.onNodeChange.add(function() { + var controlManager = ed.controlManager; + + if (controlManager.get(RESTORE_DRAFT)) + controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft()); + }); + + ed.onInit.add(function() { + // Check if the user added the restore button, then setup auto storage logic + if (ed.controlManager.get(RESTORE_DRAFT)) { + // Setup storage engine + self.setupStorage(ed); + + // Auto save contents each interval time + setInterval(function() { + self.storeDraft(); + ed.nodeChanged(); + }, settings.autosave_interval); + } + }); + + /** + * This event gets fired when a draft is stored to local storage. + * + * @event onStoreDraft + * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. + * @param {Object} draft Draft object containing the HTML contents of the editor. + */ + self.onStoreDraft = new Dispatcher(self); + + /** + * This event gets fired when a draft is restored from local storage. + * + * @event onStoreDraft + * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. + * @param {Object} draft Draft object containing the HTML contents of the editor. + */ + self.onRestoreDraft = new Dispatcher(self); + + /** + * This event gets fired when a draft removed/expired. + * + * @event onRemoveDraft + * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. + * @param {Object} draft Draft object containing the HTML contents of the editor. + */ + self.onRemoveDraft = new Dispatcher(self); + + // Add ask before unload dialog only add one unload handler + if (!unloadHandlerAdded) { + window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler; + unloadHandlerAdded = TRUE; + } + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @method getInfo + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Auto save', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + /** + * Returns an expiration date UTC string. + * + * @method getExpDate + * @return {String} Expiration date UTC string. + */ + getExpDate : function() { + return new Date( + new Date().getTime() + this.editor.settings.autosave_retention + ).toUTCString(); + }, + + /** + * This method will setup the storage engine. If the browser has support for it. + * + * @method setupStorage + */ + setupStorage : function(ed) { + var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK"; + + self.key = PLUGIN_NAME + ed.id; + + // Loop though each storage engine type until we find one that works + tinymce.each([ + function() { + // Try HTML5 Local Storage + if (localStorage) { + localStorage.setItem(testKey, testVal); + + if (localStorage.getItem(testKey) === testVal) { + localStorage.removeItem(testKey); + + return localStorage; + } + } + }, + + function() { + // Try HTML5 Session Storage + if (sessionStorage) { + sessionStorage.setItem(testKey, testVal); + + if (sessionStorage.getItem(testKey) === testVal) { + sessionStorage.removeItem(testKey); + + return sessionStorage; + } + } + }, + + function() { + // Try IE userData + if (tinymce.isIE) { + ed.getElement().style.behavior = "url('#default#userData')"; + + // Fake localStorage on old IE + return { + autoExpires : TRUE, + + setItem : function(key, value) { + var userDataElement = ed.getElement(); + + userDataElement.setAttribute(key, value); + userDataElement.expires = self.getExpDate(); + userDataElement.save("TinyMCE"); + }, + + getItem : function(key) { + var userDataElement = ed.getElement(); + + userDataElement.load("TinyMCE"); + + return userDataElement.getAttribute(key); + }, + + removeItem : function(key) { + ed.getElement().removeAttribute(key); + } + }; + } + }, + ], function(setup) { + // Try executing each function to find a suitable storage engine + try { + self.storage = setup(); + + if (self.storage) + return false; + } catch (e) { + // Ignore + } + }); + }, + + /** + * This method will store the current contents in the the storage engine. + * + * @method storeDraft + */ + storeDraft : function() { + var self = this, storage = self.storage, editor = self.editor, expires, content; + + // Is the contents dirty + if (storage) { + // If there is no existing key and the contents hasn't been changed since + // it's original value then there is no point in saving a draft + if (!storage.getItem(self.key) && !editor.isDirty()) + return; + + // Store contents if the contents if longer than the minlength of characters + content = editor.getContent(); + if (content.length > editor.settings.autosave_minlength) { + expires = self.getExpDate(); + + // Store expiration date if needed IE userData has auto expire built in + if (!self.storage.autoExpires) + self.storage.setItem(self.key + "_expires", expires); + + self.storage.setItem(self.key, content); + self.onStoreDraft.dispatch(self, { + expires : expires, + content : content + }); + } + } + }, + + /** + * This method will restore the contents from the storage engine back to the editor. + * + * @method restoreDraft + */ + restoreDraft : function() { + var self = this, storage = self.storage; + + if (storage) { + content = storage.getItem(self.key); + + if (content) { + self.editor.setContent(content); + self.onRestoreDraft.dispatch(self, { + content : content + }); + } + } + }, + + /** + * This method will return true/false if there is a local storage draft available. + * + * @method hasDraft + * @return {boolean} true/false state if there is a local draft. + */ + hasDraft : function() { + var self = this, storage = self.storage, expDate, exists; + + if (storage) { + // Does the item exist at all + exists = !!storage.getItem(self.key); + if (exists) { + // Storage needs autoexpire + if (!self.storage.autoExpires) { + expDate = new Date(storage.getItem(self.key + "_expires")); + + // Contents hasn't expired + if (new Date().getTime() < expDate.getTime()) + return TRUE; + + // Remove it if it has + self.removeDraft(); + } else + return TRUE; + } + } + + return false; + }, + + /** + * Removes the currently stored draft. + * + * @method removeDraft + */ + removeDraft : function() { + var self = this, storage = self.storage, key = self.key, content; + + if (storage) { + // Get current contents and remove the existing draft + content = storage.getItem(key); + storage.removeItem(key); + storage.removeItem(key + "_expires"); + + // Dispatch remove event if we had any contents + if (content) { + self.onRemoveDraft.dispatch(self, { + content : content + }); + } + } + }, + + "static" : { + // Internal unload handler will be called before the page is unloaded + _beforeUnloadHandler : function(e) { + var msg; + + tinymce.each(tinyMCE.editors, function(ed) { + // Store a draft for each editor instance + if (ed.plugins.autosave) + ed.plugins.autosave.storeDraft(); + + // Never ask in fullscreen mode + if (ed.getParam("fullscreen_is_enabled")) + return; + + // Setup a return message if the editor is dirty + if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload")) + msg = ed.getLang("autosave.unload_msg"); + }); + + return msg; + } + } + }); + + tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave); +})(tinymce); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/langs/en.js b/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/langs/en.js old mode 100755 new mode 100644 index fce6bd3e..219f769a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/langs/en.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/autosave/langs/en.js @@ -1,4 +1,4 @@ -tinyMCE.addI18n('en.autosave',{ -restore_content: "Restore auto-saved content", -warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?" +tinyMCE.addI18n('en.autosave',{ +restore_content: "Restore auto-saved content", +warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js old mode 100755 new mode 100644 index 5586637f..3d27c466 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -1,120 +1,120 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.BBCodePlugin', { - init : function(ed, url) { - var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase(); - - ed.onBeforeSetContent.add(function(ed, o) { - o.content = t['_' + dialect + '_bbcode2html'](o.content); - }); - - ed.onPostProcess.add(function(ed, o) { - if (o.set) - o.content = t['_' + dialect + '_bbcode2html'](o.content); - - if (o.get) - o.content = t['_' + dialect + '_html2bbcode'](o.content); - }); - }, - - getInfo : function() { - return { - longname : 'BBCode Plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - // HTML -> BBCode in PunBB dialect - _punbb_html2bbcode : function(s) { - s = tinymce.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: to [b] - rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); - rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); - rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); - rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); - rep(/(.*?)<\/font>/gi,"$1"); - rep(//gi,"[img]$1[/img]"); - rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); - rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); - rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); - rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); - rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); - rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); - rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); - rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); - rep(/<\/(strong|b)>/gi,"[/b]"); - rep(/<(strong|b)>/gi,"[b]"); - rep(/<\/(em|i)>/gi,"[/i]"); - rep(/<(em|i)>/gi,"[i]"); - rep(/<\/u>/gi,"[/u]"); - rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); - rep(//gi,"[u]"); - rep(/]*>/gi,"[quote]"); - rep(/<\/blockquote>/gi,"[/quote]"); - rep(/
    /gi,"\n"); - rep(//gi,"\n"); - rep(/
    /gi,"\n"); - rep(/

    /gi,""); - rep(/<\/p>/gi,"\n"); - rep(/ /gi," "); - rep(/"/gi,"\""); - rep(/</gi,"<"); - rep(/>/gi,">"); - rep(/&/gi,"&"); - - return s; - }, - - // BBCode -> HTML from PunBB dialect - _punbb_bbcode2html : function(s) { - s = tinymce.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: [b] to - rep(/\n/gi,"
    "); - rep(/\[b\]/gi,""); - rep(/\[\/b\]/gi,""); - rep(/\[i\]/gi,""); - rep(/\[\/i\]/gi,""); - rep(/\[u\]/gi,""); - rep(/\[\/u\]/gi,""); - rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); - rep(/\[url\](.*?)\[\/url\]/gi,"$1"); - rep(/\[img\](.*?)\[\/img\]/gi,""); - rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); - rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); - rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); - - return s; - } - }); - - // Register plugin - tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.BBCodePlugin', { + init : function(ed, url) { + var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase(); + + ed.onBeforeSetContent.add(function(ed, o) { + o.content = t['_' + dialect + '_bbcode2html'](o.content); + }); + + ed.onPostProcess.add(function(ed, o) { + if (o.set) + o.content = t['_' + dialect + '_bbcode2html'](o.content); + + if (o.get) + o.content = t['_' + dialect + '_html2bbcode'](o.content); + }); + }, + + getInfo : function() { + return { + longname : 'BBCode Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + // HTML -> BBCode in PunBB dialect + _punbb_html2bbcode : function(s) { + s = tinymce.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: to [b] + rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); + rep(/(.*?)<\/font>/gi,"$1"); + rep(//gi,"[img]$1[/img]"); + rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); + rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); + rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); + rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); + rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); + rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); + rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); + rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); + rep(/<\/(strong|b)>/gi,"[/b]"); + rep(/<(strong|b)>/gi,"[b]"); + rep(/<\/(em|i)>/gi,"[/i]"); + rep(/<(em|i)>/gi,"[i]"); + rep(/<\/u>/gi,"[/u]"); + rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); + rep(//gi,"[u]"); + rep(/]*>/gi,"[quote]"); + rep(/<\/blockquote>/gi,"[/quote]"); + rep(/
    /gi,"\n"); + rep(//gi,"\n"); + rep(/
    /gi,"\n"); + rep(/

    /gi,""); + rep(/<\/p>/gi,"\n"); + rep(/ /gi," "); + rep(/"/gi,"\""); + rep(/</gi,"<"); + rep(/>/gi,">"); + rep(/&/gi,"&"); + + return s; + }, + + // BBCode -> HTML from PunBB dialect + _punbb_bbcode2html : function(s) { + s = tinymce.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: [b] to + rep(/\n/gi,"
    "); + rep(/\[b\]/gi,""); + rep(/\[\/b\]/gi,""); + rep(/\[i\]/gi,""); + rep(/\[\/i\]/gi,""); + rep(/\[u\]/gi,""); + rep(/\[\/u\]/gi,""); + rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); + rep(/\[url\](.*?)\[\/url\]/gi,"$1"); + rep(/\[img\](.*?)\[\/img\]/gi,""); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); + rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); + + return s; + } + }); + + // Register plugin + tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js old mode 100755 new mode 100644 index 25ad9dd7..e83cb7e7 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -1,140 +1,140 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM; - - /** - * This plugin a context menu to TinyMCE editor instances. - * - * @class tinymce.plugins.ContextMenu - */ - tinymce.create('tinymce.plugins.ContextMenu', { - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @method init - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init : function(ed) { - var t = this, lastRng; - - t.editor = ed; - - /** - * This event gets fired when the context menu is shown. - * - * @event onContextMenu - * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event. - * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed. - */ - t.onContextMenu = new tinymce.util.Dispatcher(this); - - ed.onContextMenu.add(function(ed, e) { - if (!e.ctrlKey) { - // Restore the last selection since it was removed - if (lastRng) - ed.selection.setRng(lastRng); - - t._getMenu(ed).showMenu(e.clientX, e.clientY); - Event.add(ed.getDoc(), 'click', hide); - Event.cancel(e); - } - }); - - function hide(ed, e) { - lastRng = null; - - // Since the contextmenu event moves - // the selection we need to store it away - if (e && e.button == 2) { - lastRng = ed.selection.getRng(); - return; - } - - if (t._menu) { - t._menu.removeAll(); - t._menu.destroy(); - Event.remove(ed.getDoc(), 'click', hide); - } - }; - - ed.onMouseDown.add(hide); - ed.onKeyDown.add(hide); - }, - - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @method getInfo - * @return {Object} Name/value array containing information about the plugin. - */ - getInfo : function() { - return { - longname : 'Contextmenu', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - _getMenu : function(ed) { - var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2; - - if (m) { - m.removeAll(); - m.destroy(); - } - - p1 = DOM.getPos(ed.getContentAreaContainer()); - p2 = DOM.getPos(ed.getContainer()); - - m = ed.controlManager.createDropMenu('contextmenu', { - offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0), - offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0), - constrain : 1 - }); - - t._menu = m; - - m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col); - m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col); - m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'}); - - if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) { - m.addSeparator(); - m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); - m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); - } - - m.addSeparator(); - m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); - - m.addSeparator(); - am = m.addMenu({title : 'contextmenu.align'}); - am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'}); - am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'}); - am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'}); - am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'}); - - t.onContextMenu.dispatch(t, m, el, col); - - return m; - } - }); - - // Register plugin - tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM; + + /** + * This plugin a context menu to TinyMCE editor instances. + * + * @class tinymce.plugins.ContextMenu + */ + tinymce.create('tinymce.plugins.ContextMenu', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @method init + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed) { + var t = this, lastRng; + + t.editor = ed; + + /** + * This event gets fired when the context menu is shown. + * + * @event onContextMenu + * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event. + * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed. + */ + t.onContextMenu = new tinymce.util.Dispatcher(this); + + ed.onContextMenu.add(function(ed, e) { + if (!e.ctrlKey) { + // Restore the last selection since it was removed + if (lastRng) + ed.selection.setRng(lastRng); + + t._getMenu(ed).showMenu(e.clientX, e.clientY); + Event.add(ed.getDoc(), 'click', hide); + Event.cancel(e); + } + }); + + function hide(ed, e) { + lastRng = null; + + // Since the contextmenu event moves + // the selection we need to store it away + if (e && e.button == 2) { + lastRng = ed.selection.getRng(); + return; + } + + if (t._menu) { + t._menu.removeAll(); + t._menu.destroy(); + Event.remove(ed.getDoc(), 'click', hide); + } + }; + + ed.onMouseDown.add(hide); + ed.onKeyDown.add(hide); + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @method getInfo + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Contextmenu', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _getMenu : function(ed) { + var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2; + + if (m) { + m.removeAll(); + m.destroy(); + } + + p1 = DOM.getPos(ed.getContentAreaContainer()); + p2 = DOM.getPos(ed.getContainer()); + + m = ed.controlManager.createDropMenu('contextmenu', { + offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0), + offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0), + constrain : 1 + }); + + t._menu = m; + + m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col); + m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col); + m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'}); + + if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) { + m.addSeparator(); + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + } + + m.addSeparator(); + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + + m.addSeparator(); + am = m.addMenu({title : 'contextmenu.align'}); + am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'}); + am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'}); + am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'}); + am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'}); + + t.onContextMenu.dispatch(t, m, el, col); + + return m; + } + }); + + // Register plugin + tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js old mode 100755 new mode 100644 index 4444959b..205d02cd --- a/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js @@ -1,82 +1,82 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.Directionality', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - ed.addCommand('mceDirectionLTR', function() { - var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); - - if (e) { - if (ed.dom.getAttrib(e, "dir") != "ltr") - ed.dom.setAttrib(e, "dir", "ltr"); - else - ed.dom.setAttrib(e, "dir", ""); - } - - ed.nodeChanged(); - }); - - ed.addCommand('mceDirectionRTL', function() { - var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); - - if (e) { - if (ed.dom.getAttrib(e, "dir") != "rtl") - ed.dom.setAttrib(e, "dir", "rtl"); - else - ed.dom.setAttrib(e, "dir", ""); - } - - ed.nodeChanged(); - }); - - ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'}); - ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'}); - - ed.onNodeChange.add(t._nodeChange, t); - }, - - getInfo : function() { - return { - longname : 'Directionality', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - _nodeChange : function(ed, cm, n) { - var dom = ed.dom, dir; - - n = dom.getParent(n, dom.isBlock); - if (!n) { - cm.setDisabled('ltr', 1); - cm.setDisabled('rtl', 1); - return; - } - - dir = dom.getAttrib(n, 'dir'); - cm.setActive('ltr', dir == "ltr"); - cm.setDisabled('ltr', 0); - cm.setActive('rtl', dir == "rtl"); - cm.setDisabled('rtl', 0); - } - }); - - // Register plugin - tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Directionality', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + ed.addCommand('mceDirectionLTR', function() { + var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); + + if (e) { + if (ed.dom.getAttrib(e, "dir") != "ltr") + ed.dom.setAttrib(e, "dir", "ltr"); + else + ed.dom.setAttrib(e, "dir", ""); + } + + ed.nodeChanged(); + }); + + ed.addCommand('mceDirectionRTL', function() { + var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); + + if (e) { + if (ed.dom.getAttrib(e, "dir") != "rtl") + ed.dom.setAttrib(e, "dir", "rtl"); + else + ed.dom.setAttrib(e, "dir", ""); + } + + ed.nodeChanged(); + }); + + ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'}); + ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'}); + + ed.onNodeChange.add(t._nodeChange, t); + }, + + getInfo : function() { + return { + longname : 'Directionality', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _nodeChange : function(ed, cm, n) { + var dom = ed.dom, dir; + + n = dom.getParent(n, dom.isBlock); + if (!n) { + cm.setDisabled('ltr', 1); + cm.setDisabled('rtl', 1); + return; + } + + dir = dom.getAttrib(n, 'dir'); + cm.setActive('ltr', dir == "ltr"); + cm.setDisabled('ltr', 0); + cm.setActive('rtl', dir == "rtl"); + cm.setDisabled('rtl', 0); + } + }); + + // Register plugin + tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js old mode 100755 new mode 100644 index 71d54169..aeee199d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js @@ -1,43 +1,43 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function(tinymce) { - tinymce.create('tinymce.plugins.EmotionsPlugin', { - init : function(ed, url) { - // Register commands - ed.addCommand('mceEmotion', function() { - ed.windowManager.open({ - file : url + '/emotions.htm', - width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)), - height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'}); - }, - - getInfo : function() { - return { - longname : 'Emotions', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + tinymce.create('tinymce.plugins.EmotionsPlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceEmotion', function() { + ed.windowManager.open({ + file : url + '/emotions.htm', + width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)), + height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'}); + }, + + getInfo : function() { + return { + longname : 'Emotions', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin); })(tinymce); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/emotions.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/emotions.htm old mode 100755 new mode 100644 index 55a1d72f..5927b603 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/emotions.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/emotions.htm @@ -1,40 +1,40 @@ - - - - {#emotions_dlg.title} - - - - -

    -
    {#emotions_dlg.title}:

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {#emotions_dlg.cool}{#emotions_dlg.cry}{#emotions_dlg.embarassed}{#emotions_dlg.foot_in_mouth}
    {#emotions_dlg.frown}{#emotions_dlg.innocent}{#emotions_dlg.kiss}{#emotions_dlg.laughing}
    {#emotions_dlg.money_mouth}{#emotions_dlg.sealed}{#emotions_dlg.smile}{#emotions_dlg.surprised}
    {#emotions_dlg.tongue-out}{#emotions_dlg.undecided}{#emotions_dlg.wink}{#emotions_dlg.yell}
    -
    - - + + + + {#emotions_dlg.title} + + + + +
    +
    {#emotions_dlg.title}:

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {#emotions_dlg.cool}{#emotions_dlg.cry}{#emotions_dlg.embarassed}{#emotions_dlg.foot_in_mouth}
    {#emotions_dlg.frown}{#emotions_dlg.innocent}{#emotions_dlg.kiss}{#emotions_dlg.laughing}
    {#emotions_dlg.money_mouth}{#emotions_dlg.sealed}{#emotions_dlg.smile}{#emotions_dlg.surprised}
    {#emotions_dlg.tongue-out}{#emotions_dlg.undecided}{#emotions_dlg.wink}{#emotions_dlg.yell}
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/js/emotions.js b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/js/emotions.js old mode 100755 new mode 100644 index c5493670..e5c950fc --- a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/js/emotions.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/js/emotions.js @@ -1,22 +1,22 @@ -tinyMCEPopup.requireLangPack(); - -var EmotionsDialog = { - init : function(ed) { - tinyMCEPopup.resizeToInnerSize(); - }, - - insert : function(file, title) { - var ed = tinyMCEPopup.editor, dom = ed.dom; - - tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { - src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, - alt : ed.getLang(title), - title : ed.getLang(title), - border : 0 - })); - - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); +tinyMCEPopup.requireLangPack(); + +var EmotionsDialog = { + init : function(ed) { + tinyMCEPopup.resizeToInnerSize(); + }, + + insert : function(file, title) { + var ed = tinyMCEPopup.editor, dom = ed.dom; + + tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { + src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, + alt : ed.getLang(title), + title : ed.getLang(title), + border : 0 + })); + + tinyMCEPopup.close(); + } +}; + +tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js old mode 100755 new mode 100644 index 3b57ad9e..f6d5f4ba --- a/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js @@ -1,20 +1,20 @@ -tinyMCE.addI18n('en.emotions_dlg',{ -title:"Insert emotion", -desc:"Emotions", -cool:"Cool", -cry:"Cry", -embarassed:"Embarassed", -foot_in_mouth:"Foot in mouth", -frown:"Frown", -innocent:"Innocent", -kiss:"Kiss", -laughing:"Laughing", -money_mouth:"Money mouth", -sealed:"Sealed", -smile:"Smile", -surprised:"Surprised", -tongue_out:"Tongue out", -undecided:"Undecided", -wink:"Wink", -yell:"Yell" +tinyMCE.addI18n('en.emotions_dlg',{ +title:"Insert emotion", +desc:"Emotions", +cool:"Cool", +cry:"Cry", +embarassed:"Embarassed", +foot_in_mouth:"Foot in mouth", +frown:"Frown", +innocent:"Innocent", +kiss:"Kiss", +laughing:"Laughing", +money_mouth:"Money mouth", +sealed:"Sealed", +smile:"Smile", +surprised:"Surprised", +tongue_out:"Tongue out", +undecided:"Undecided", +wink:"Wink", +yell:"Yell" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/dialog.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/example/dialog.htm old mode 100755 new mode 100644 index 50b2b344..d6f2856a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/example/dialog.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/example/dialog.htm @@ -1,22 +1,22 @@ - - - - {#example_dlg.title} - - - - - -
    -

    Here is a example dialog.

    -

    Selected text:

    -

    Custom arg:

    - -
    - - -
    -
    - - - + + + + {#example_dlg.title} + + + + + +
    +

    Here is a example dialog.

    +

    Selected text:

    +

    Custom arg:

    + +
    + + +
    +
    + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin_src.js old mode 100755 new mode 100644 index 9a0e7da1..edc1e776 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/example/editor_plugin_src.js @@ -1,84 +1,84 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - // Load plugin specific language pack - tinymce.PluginManager.requireLangPack('example'); - - tinymce.create('tinymce.plugins.ExamplePlugin', { - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init : function(ed, url) { - // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); - ed.addCommand('mceExample', function() { - ed.windowManager.open({ - file : url + '/dialog.htm', - width : 320 + parseInt(ed.getLang('example.delta_width', 0)), - height : 120 + parseInt(ed.getLang('example.delta_height', 0)), - inline : 1 - }, { - plugin_url : url, // Plugin absolute URL - some_custom_arg : 'custom arg' // Custom argument - }); - }); - - // Register example button - ed.addButton('example', { - title : 'example.desc', - cmd : 'mceExample', - image : url + '/img/example.gif' - }); - - // Add a node change handler, selects the button in the UI when a image is selected - ed.onNodeChange.add(function(ed, cm, n) { - cm.setActive('example', n.nodeName == 'IMG'); - }); - }, - - /** - * Creates control instances based in the incomming name. This method is normally not - * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons - * but you sometimes need to create more complex controls like listboxes, split buttons etc then this - * method can be used to create those. - * - * @param {String} n Name of the control to create. - * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. - * @return {tinymce.ui.Control} New control instance or null if no control was created. - */ - createControl : function(n, cm) { - return null; - }, - - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @return {Object} Name/value array containing information about the plugin. - */ - getInfo : function() { - return { - longname : 'Example plugin', - author : 'Some author', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example', - version : "1.0" - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + // Load plugin specific language pack + tinymce.PluginManager.requireLangPack('example'); + + tinymce.create('tinymce.plugins.ExamplePlugin', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed, url) { + // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); + ed.addCommand('mceExample', function() { + ed.windowManager.open({ + file : url + '/dialog.htm', + width : 320 + parseInt(ed.getLang('example.delta_width', 0)), + height : 120 + parseInt(ed.getLang('example.delta_height', 0)), + inline : 1 + }, { + plugin_url : url, // Plugin absolute URL + some_custom_arg : 'custom arg' // Custom argument + }); + }); + + // Register example button + ed.addButton('example', { + title : 'example.desc', + cmd : 'mceExample', + image : url + '/img/example.gif' + }); + + // Add a node change handler, selects the button in the UI when a image is selected + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('example', n.nodeName == 'IMG'); + }); + }, + + /** + * Creates control instances based in the incomming name. This method is normally not + * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons + * but you sometimes need to create more complex controls like listboxes, split buttons etc then this + * method can be used to create those. + * + * @param {String} n Name of the control to create. + * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. + * @return {tinymce.ui.Control} New control instance or null if no control was created. + */ + createControl : function(n, cm) { + return null; + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Example plugin', + author : 'Some author', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example', + version : "1.0" + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/img/example.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/example/img/example.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/js/dialog.js b/src/lab/final-build/jscripts/tiny_mce/plugins/example/js/dialog.js old mode 100755 new mode 100644 index fa834113..a7ee507e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/example/js/dialog.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/example/js/dialog.js @@ -1,19 +1,19 @@ -tinyMCEPopup.requireLangPack(); - -var ExampleDialog = { - init : function() { - var f = document.forms[0]; - - // Get the selected contents as text and place it in the input - f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'}); - f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg'); - }, - - insert : function() { - // Insert the contents from the input into the document - tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value); - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog); +tinyMCEPopup.requireLangPack(); + +var ExampleDialog = { + init : function() { + var f = document.forms[0]; + + // Get the selected contents as text and place it in the input + f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'}); + f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg'); + }, + + insert : function() { + // Insert the contents from the input into the document + tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value); + tinyMCEPopup.close(); + } +}; + +tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en.js b/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en.js old mode 100755 new mode 100644 index e0784f80..f3721d3a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en.js @@ -1,3 +1,3 @@ -tinyMCE.addI18n('en.example',{ - desc : 'This is just a template button' -}); +tinyMCE.addI18n('en.example',{ + desc : 'This is just a template button' +}); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en_dlg.js old mode 100755 new mode 100644 index ebcf948d..a9cd65f8 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/example/langs/en_dlg.js @@ -1,3 +1,3 @@ -tinyMCE.addI18n('en.example_dlg',{ - title : 'This is just a example title' -}); +tinyMCE.addI18n('en.example_dlg',{ + title : 'This is just a example title' +}); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css old mode 100755 new mode 100644 index 7a3334f0..1854eca9 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css @@ -1,182 +1,182 @@ -/* Hide the advanced tab */ -#advanced_tab { - display: none; -} - -#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { - width: 280px; -} - -#doctype, #docencoding { - width: 200px; -} - -#langcode { - width: 30px; -} - -#bgimage { - width: 220px; -} - -#fontface { - width: 240px; -} - -#leftmargin, #rightmargin, #topmargin, #bottommargin { - width: 50px; -} - -.panel_wrapper div.current { - height: 400px; -} - -#stylesheet, #style { - width: 240px; -} - -/* Head list classes */ - -.headlistwrapper { - width: 100%; -} - -.addbutton, .removebutton, .moveupbutton, .movedownbutton { - border-top: 1px solid; - border-left: 1px solid; - border-bottom: 1px solid; - border-right: 1px solid; - border-color: #F0F0EE; - cursor: default; - display: block; - width: 20px; - height: 20px; -} - -#doctypes { - width: 200px; -} - -.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { - border: 1px solid #0A246A; - background-color: #B6BDD2; -} - -.addbutton { - background-image: url('../images/add.gif'); - float: left; - margin-right: 3px; -} - -.removebutton { - background-image: url('../images/remove.gif'); - float: left; -} - -.moveupbutton { - background-image: url('../images/move_up.gif'); - float: left; - margin-right: 3px; -} - -.movedownbutton { - background-image: url('../images/move_down.gif'); - float: left; -} - -.selected { - border: 1px solid #0A246A; - background-color: #B6BDD2; -} - -.toolbar { - width: 100%; -} - -#headlist { - width: 100%; - margin-top: 3px; - font-size: 11px; -} - -#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { - display: none; -} - -#addmenu { - position: absolute; - border: 1px solid gray; - display: none; - z-index: 100; - background-color: white; -} - -#addmenu a { - display: block; - width: 100%; - line-height: 20px; - text-decoration: none; - background-color: white; -} - -#addmenu a:hover { - background-color: #B6BDD2; - color: black; -} - -#addmenu span { - padding-left: 10px; - padding-right: 10px; -} - -#updateElementPanel { - display: none; -} - -#script_element .panel_wrapper div.current { - height: 108px; -} - -#style_element .panel_wrapper div.current { - height: 108px; -} - -#link_element .panel_wrapper div.current { - height: 140px; -} - -#element_script_value { - width: 100%; - height: 100px; -} - -#element_comment_value { - width: 100%; - height: 120px; -} - -#element_style_value { - width: 100%; - height: 100px; -} - -#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { - width: 250px; -} - -.updateElementButton { - margin-top: 3px; -} - -/* MSIE specific styles */ - -* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { - width: 22px; - height: 22px; -} - -textarea { - height: 55px; -} - +/* Hide the advanced tab */ +#advanced_tab { + display: none; +} + +#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { + width: 280px; +} + +#doctype, #docencoding { + width: 200px; +} + +#langcode { + width: 30px; +} + +#bgimage { + width: 220px; +} + +#fontface { + width: 240px; +} + +#leftmargin, #rightmargin, #topmargin, #bottommargin { + width: 50px; +} + +.panel_wrapper div.current { + height: 400px; +} + +#stylesheet, #style { + width: 240px; +} + +/* Head list classes */ + +.headlistwrapper { + width: 100%; +} + +.addbutton, .removebutton, .moveupbutton, .movedownbutton { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; + display: block; + width: 20px; + height: 20px; +} + +#doctypes { + width: 200px; +} + +.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.addbutton { + background-image: url('../images/add.gif'); + float: left; + margin-right: 3px; +} + +.removebutton { + background-image: url('../images/remove.gif'); + float: left; +} + +.moveupbutton { + background-image: url('../images/move_up.gif'); + float: left; + margin-right: 3px; +} + +.movedownbutton { + background-image: url('../images/move_down.gif'); + float: left; +} + +.selected { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.toolbar { + width: 100%; +} + +#headlist { + width: 100%; + margin-top: 3px; + font-size: 11px; +} + +#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { + display: none; +} + +#addmenu { + position: absolute; + border: 1px solid gray; + display: none; + z-index: 100; + background-color: white; +} + +#addmenu a { + display: block; + width: 100%; + line-height: 20px; + text-decoration: none; + background-color: white; +} + +#addmenu a:hover { + background-color: #B6BDD2; + color: black; +} + +#addmenu span { + padding-left: 10px; + padding-right: 10px; +} + +#updateElementPanel { + display: none; +} + +#script_element .panel_wrapper div.current { + height: 108px; +} + +#style_element .panel_wrapper div.current { + height: 108px; +} + +#link_element .panel_wrapper div.current { + height: 140px; +} + +#element_script_value { + width: 100%; + height: 100px; +} + +#element_comment_value { + width: 100%; + height: 120px; +} + +#element_style_value { + width: 100%; + height: 100px; +} + +#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { + width: 250px; +} + +.updateElementButton { + margin-top: 3px; +} + +/* MSIE specific styles */ + +* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { + width: 22px; + height: 22px; +} + +textarea { + height: 55px; +} + .panel_wrapper div.current {height:420px;} \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js old mode 100755 new mode 100644 index b7d51d58..fc7f988e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js @@ -1,149 +1,149 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.FullPagePlugin', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceFullPageProperties', function() { - ed.windowManager.open({ - file : url + '/fullpage.htm', - width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)), - height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)), - inline : 1 - }, { - plugin_url : url, - head_html : t.head - }); - }); - - // Register buttons - ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'}); - - ed.onBeforeSetContent.add(t._setContent, t); - ed.onSetContent.add(t._setBodyAttribs, t); - ed.onGetContent.add(t._getContent, t); - }, - - getInfo : function() { - return { - longname : 'Fullpage', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private plugin internal methods - - _setBodyAttribs : function(ed, o) { - var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i); - - if (attr && attr[1]) { - bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g); - - if (bdattr) { - for(i = 0, len = bdattr.length; i < len; i++) { - kv = bdattr[i].split('='); - k = kv[0].replace(/\s/,''); - v = kv[1]; - - if (v) { - v = v.replace(/^\s+/,'').replace(/\s+$/,''); - t = v.match(/^["'](.*)["']$/); - - if (t) - v = t[1]; - } else - v = k; - - ed.dom.setAttrib(ed.getBody(), 'style', v); - } - } - } - }, - - _createSerializer : function() { - return new tinymce.dom.Serializer({ - dom : this.editor.dom, - apply_source_formatting : true - }); - }, - - _setContent : function(ed, o) { - var t = this, sp, ep, c = o.content, v, st = ''; - - if (o.source_view && ed.getParam('fullpage_hide_in_source_view')) - return; - - // Parse out head, body and footer - c = c.replace(/<(\/?)BODY/gi, '<$1body'); - sp = c.indexOf('', sp); - t.head = c.substring(0, sp + 1); - - ep = c.indexOf('\n'; - - t.head += ed.getParam('fullpage_default_doctype', ''); - t.head += '\n\n\n' + ed.getParam('fullpage_default_title', 'Untitled document') + '\n'; - - if (v = ed.getParam('fullpage_default_encoding')) - t.head += '\n'; - - if (v = ed.getParam('fullpage_default_font_family')) - st += 'font-family: ' + v + ';'; - - if (v = ed.getParam('fullpage_default_font_size')) - st += 'font-size: ' + v + ';'; - - if (v = ed.getParam('fullpage_default_text_color')) - st += 'color: ' + v + ';'; - - t.head += '\n\n'; - t.foot = '\n\n'; - } - }, - - _getContent : function(ed, o) { - var t = this; - - if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) - o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); - } - }); - - // Register plugin - tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.FullPagePlugin', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceFullPageProperties', function() { + ed.windowManager.open({ + file : url + '/fullpage.htm', + width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)), + height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + head_html : t.head + }); + }); + + // Register buttons + ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'}); + + ed.onBeforeSetContent.add(t._setContent, t); + ed.onSetContent.add(t._setBodyAttribs, t); + ed.onGetContent.add(t._getContent, t); + }, + + getInfo : function() { + return { + longname : 'Fullpage', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private plugin internal methods + + _setBodyAttribs : function(ed, o) { + var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i); + + if (attr && attr[1]) { + bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g); + + if (bdattr) { + for(i = 0, len = bdattr.length; i < len; i++) { + kv = bdattr[i].split('='); + k = kv[0].replace(/\s/,''); + v = kv[1]; + + if (v) { + v = v.replace(/^\s+/,'').replace(/\s+$/,''); + t = v.match(/^["'](.*)["']$/); + + if (t) + v = t[1]; + } else + v = k; + + ed.dom.setAttrib(ed.getBody(), 'style', v); + } + } + } + }, + + _createSerializer : function() { + return new tinymce.dom.Serializer({ + dom : this.editor.dom, + apply_source_formatting : true + }); + }, + + _setContent : function(ed, o) { + var t = this, sp, ep, c = o.content, v, st = ''; + + if (o.source_view && ed.getParam('fullpage_hide_in_source_view')) + return; + + // Parse out head, body and footer + c = c.replace(/<(\/?)BODY/gi, '<$1body'); + sp = c.indexOf('', sp); + t.head = c.substring(0, sp + 1); + + ep = c.indexOf('\n'; + + t.head += ed.getParam('fullpage_default_doctype', ''); + t.head += '\n\n\n' + ed.getParam('fullpage_default_title', 'Untitled document') + '\n'; + + if (v = ed.getParam('fullpage_default_encoding')) + t.head += '\n'; + + if (v = ed.getParam('fullpage_default_font_family')) + st += 'font-family: ' + v + ';'; + + if (v = ed.getParam('fullpage_default_font_size')) + st += 'font-size: ' + v + ';'; + + if (v = ed.getParam('fullpage_default_text_color')) + st += 'color: ' + v + ';'; + + t.head += '\n\n'; + t.foot = '\n\n'; + } + }, + + _getContent : function(ed, o) { + var t = this; + + if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) + o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); + } + }); + + // Register plugin + tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/fullpage.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/fullpage.htm old mode 100755 new mode 100644 index c32afaf2..d8e62fb3 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/fullpage.htm @@ -1,571 +1,571 @@ - - - - {#fullpage_dlg.title} - - - - - - - -
    - - -
    -
    -
    - {#fullpage_dlg.meta_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
     
     
     
     
      - -
    -
    - -
    - {#fullpage_dlg.langprops} - - - - - - - - - - - - - - - - - - - - - - -
    - -
      - -
     
    - -
     
    -
    -
    - -
    -
    - {#fullpage_dlg.appearance_textprops} - - - - - - - - - - - - - - - - -
    - -
    - -
    - - - - - -
     
    -
    -
    - -
    - {#fullpage_dlg.appearance_bgprops} - - - - - - - - - - -
    - - - - - -
     
    -
    - - - - - -
     
    -
    -
    - -
    - {#fullpage_dlg.appearance_marginprops} - - - - - - - - - - - - - - -
    -
    - -
    - {#fullpage_dlg.appearance_linkprops} - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    -
    - - - - - -
     
    -
    - - - - - -
     
    -
      
    -
    - -
    - {#fullpage_dlg.appearance_style} - - - - - - - - - - -
    - - - - -
     
    -
    -
    - -
    - - -
    - {#fullpage_dlg.head_elements} - -
    -
    -
    - - -
    -
    - - -
    -
    -
    - -
    -
    - -
    - {#fullpage_dlg.meta_element} - - - - - - - - - - - - - - -
    - - -
    - -
    - {#fullpage_dlg.title_element} - - - - - - -
    - - -
    - -
    - {#fullpage_dlg.script_element} - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    - -
    - -
    -
    - - -
    - -
    - {#fullpage_dlg.style_element} - - - -
    - -
    -
    - - - - - - - - - -
    -
    - -
    - -
    -
    - - -
    - -
    - {#fullpage_dlg.base_element} - - - - - - - - - - -
    - - -
    - - - -
    - {#fullpage_dlg.comment_element} - - - - -
    -
    -
    - -
    - - -
    -
    - - + + + + {#fullpage_dlg.title} + + + + + + + +
    + + +
    +
    +
    + {#fullpage_dlg.meta_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
     
     
     
     
     
      + +
    +
    + +
    + {#fullpage_dlg.langprops} + + + + + + + + + + + + + + + + + + + + + + +
    + +
      + +
     
    + +
     
    +
    +
    + +
    +
    + {#fullpage_dlg.appearance_textprops} + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    +
    + +
    + {#fullpage_dlg.appearance_bgprops} + + + + + + + + + + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    + +
    + {#fullpage_dlg.appearance_marginprops} + + + + + + + + + + + + + + +
    +
    + +
    + {#fullpage_dlg.appearance_linkprops} + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    + + + + + +
     
    +
    + + + + + +
     
    +
      
    +
    + +
    + {#fullpage_dlg.appearance_style} + + + + + + + + + + +
    + + + + +
     
    +
    +
    + +
    + + +
    + {#fullpage_dlg.head_elements} + +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + +
    + {#fullpage_dlg.meta_element} + + + + + + + + + + + + + + +
    + + +
    + +
    + {#fullpage_dlg.title_element} + + + + + + +
    + + +
    + +
    + {#fullpage_dlg.script_element} + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + +
    + + + + +
     
    +
    + +
    + +
    +
    + + +
    + +
    + {#fullpage_dlg.style_element} + + + +
    + +
    +
    + + + + + + + + + +
    +
    + +
    + +
    +
    + + +
    + +
    + {#fullpage_dlg.base_element} + + + + + + + + + + +
    + + +
    + + + +
    + {#fullpage_dlg.comment_element} + + + + +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js old mode 100755 new mode 100644 index a1bb719a..7a80fcd2 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js @@ -1,471 +1,471 @@ -/** - * fullpage.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -tinyMCEPopup.requireLangPack(); - -var doc; - -var defaultDocTypes = - 'XHTML 1.0 Transitional=,' + - 'XHTML 1.0 Frameset=,' + - 'XHTML 1.0 Strict=,' + - 'XHTML 1.1=,' + - 'HTML 4.01 Transitional=,' + - 'HTML 4.01 Strict=,' + - 'HTML 4.01 Frameset='; - -var defaultEncodings = - 'Western european (iso-8859-1)=iso-8859-1,' + - 'Central European (iso-8859-2)=iso-8859-2,' + - 'Unicode (UTF-8)=utf-8,' + - 'Chinese traditional (Big5)=big5,' + - 'Cyrillic (iso-8859-5)=iso-8859-5,' + - 'Japanese (iso-2022-jp)=iso-2022-jp,' + - 'Greek (iso-8859-7)=iso-8859-7,' + - 'Korean (iso-2022-kr)=iso-2022-kr,' + - 'ASCII (us-ascii)=us-ascii'; - -var defaultMediaTypes = - 'all=all,' + - 'screen=screen,' + - 'print=print,' + - 'tty=tty,' + - 'tv=tv,' + - 'projection=projection,' + - 'handheld=handheld,' + - 'braille=braille,' + - 'aural=aural'; - -var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; -var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; - -function init() { - var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style; - - // Setup doctype select box - doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(','); - for (i=0; i 1) - addSelectValue(f, 'doctypes', p[0], p[1]); - } - - // Setup fonts select box - fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';'); - for (i=0; i 1) - addSelectValue(f, 'fontface', p[0], p[1]); - } - - // Setup fontsize select box - fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(','); - for (i=0; i 1) { - addSelectValue(f, 'element_style_media', p[0], p[1]); - addSelectValue(f, 'element_link_media', p[0], p[1]); - } - } - - // Setup encodings select box - encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(','); - for (i=0; i 1) { - addSelectValue(f, 'docencoding', p[0], p[1]); - addSelectValue(f, 'element_script_charset', p[0], p[1]); - addSelectValue(f, 'element_link_charset', p[0], p[1]); - } - } - - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); - //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color'); - document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); - document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); - document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); - document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); - document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage'); - document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage'); - document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); - - // Resize some elements - if (isVisible('stylesheetbrowser')) - document.getElementById('stylesheet').style.width = '220px'; - - if (isVisible('link_href_browser')) - document.getElementById('element_link_href').style.width = '230px'; - - if (isVisible('bgimage_browser')) - document.getElementById('bgimage').style.width = '210px'; - - // Add iframe - dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}}); - doc = dom.get('documentIframe').contentWindow.document; - h = tinyMCEPopup.getWindowArg('head_html'); - - // Preprocess the HTML disable scripts and urls - h = h.replace(/ - - - -
    - -
    - - - - - + + + + + + + + +
    + +
    + + + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js old mode 100755 new mode 100644 index 1b2bb984..61edf1e2 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js @@ -1,54 +1,54 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.IESpell', { - init : function(ed, url) { - var t = this, sp; - - if (!tinymce.isIE) - return; - - t.editor = ed; - - // Register commands - ed.addCommand('mceIESpell', function() { - try { - sp = new ActiveXObject("ieSpell.ieSpellExtension"); - sp.CheckDocumentNode(ed.getDoc().documentElement); - } catch (e) { - if (e.number == -2146827859) { - ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) { - if (s) - window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); - }); - } else - ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number); - } - }); - - // Register buttons - ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'}); - }, - - getInfo : function() { - return { - longname : 'IESpell (IE Only)', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.IESpell', { + init : function(ed, url) { + var t = this, sp; + + if (!tinymce.isIE) + return; + + t.editor = ed; + + // Register commands + ed.addCommand('mceIESpell', function() { + try { + sp = new ActiveXObject("ieSpell.ieSpellExtension"); + sp.CheckDocumentNode(ed.getDoc().documentElement); + } catch (e) { + if (e.number == -2146827859) { + ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) { + if (s) + window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); + }); + } else + ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number); + } + }); + + // Register buttons + ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'}); + }, + + getInfo : function() { + return { + longname : 'IESpell (IE Only)', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js old mode 100755 new mode 100644 index e991683d..10ce4d9a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js @@ -1,635 +1,635 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is; - - tinymce.create('tinymce.plugins.InlinePopups', { - init : function(ed, url) { - // Replace window manager - ed.onBeforeRenderUI.add(function() { - ed.windowManager = new tinymce.InlineWindowManager(ed); - DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css"); - }); - }, - - getInfo : function() { - return { - longname : 'InlinePopups', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', { - InlineWindowManager : function(ed) { - var t = this; - - t.parent(ed); - t.zIndex = 300000; - t.count = 0; - t.windows = {}; - }, - - open : function(f, p) { - var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u; - - f = f || {}; - p = p || {}; - - // Run native windows - if (!f.inline) - return t.parent(f, p); - - // Only store selection if the type is a normal window - if (!f.type) - t.bookmark = ed.selection.getBookmark(1); - - id = DOM.uniqueId(); - vp = DOM.getViewPort(); - f.width = parseInt(f.width || 320); - f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0); - f.min_width = parseInt(f.min_width || 150); - f.min_height = parseInt(f.min_height || 100); - f.max_width = parseInt(f.max_width || 2000); - f.max_height = parseInt(f.max_height || 2000); - f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0))); - f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0))); - f.movable = f.resizable = true; - p.mce_width = f.width; - p.mce_height = f.height; - p.mce_inline = true; - p.mce_window_id = id; - p.mce_auto_focus = f.auto_focus; - - // Transpose -// po = DOM.getPos(ed.getContainer()); -// f.left -= po.x; -// f.top -= po.y; - - t.features = f; - t.params = p; - t.onOpen.dispatch(t, f, p); - - if (f.type) { - opt += ' mceModal'; - - if (f.type) - opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1); - - f.resizable = false; - } - - if (f.statusbar) - opt += ' mceStatusbar'; - - if (f.resizable) - opt += ' mceResizable'; - - if (f.minimizable) - opt += ' mceMinimizable'; - - if (f.maximizable) - opt += ' mceMaximizable'; - - if (f.movable) - opt += ' mceMovable'; - - // Create DOM objects - t._addAll(DOM.doc.body, - ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, - ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt}, - ['div', {id : id + '_top', 'class' : 'mceTop'}, - ['div', {'class' : 'mceLeft'}], - ['div', {'class' : 'mceCenter'}], - ['div', {'class' : 'mceRight'}], - ['span', {id : id + '_title'}, f.title || ''] - ], - - ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, - ['div', {id : id + '_left', 'class' : 'mceLeft'}], - ['span', {id : id + '_content'}], - ['div', {id : id + '_right', 'class' : 'mceRight'}] - ], - - ['div', {id : id + '_bottom', 'class' : 'mceBottom'}, - ['div', {'class' : 'mceLeft'}], - ['div', {'class' : 'mceCenter'}], - ['div', {'class' : 'mceRight'}], - ['span', {id : id + '_status'}, 'Content'] - ], - - ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}], - ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], - ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], - ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], - ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], - ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}], - ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}] - ] - ] - ); - - DOM.setStyles(id, {top : -10000, left : -10000}); - - // Fix gecko rendering bug, where the editors iframe messed with window contents - if (tinymce.isGecko) - DOM.setStyle(id, 'overflow', 'auto'); - - // Measure borders - if (!f.type) { - dw += DOM.get(id + '_left').clientWidth; - dw += DOM.get(id + '_right').clientWidth; - dh += DOM.get(id + '_top').clientHeight; - dh += DOM.get(id + '_bottom').clientHeight; - } - - // Resize window - DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); - - u = f.url || f.file; - if (u) { - if (tinymce.relaxedDomain) - u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; - - u = tinymce._addVer(u); - } - - if (!f.type) { - DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); - DOM.setStyles(id + '_ifr', {width : f.width, height : f.height}); - DOM.setAttrib(id + '_ifr', 'src', u); - } else { - DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok'); - - if (f.type == 'confirm') - DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel'); - - DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'}); - DOM.setHTML(id + '_content', f.content.replace('\n', '
    ')); - } - - // Register events - mdf = Event.add(id, 'mousedown', function(e) { - var n = e.target, w, vp; - - w = t.windows[id]; - t.focus(id); - - if (n.nodeName == 'A' || n.nodeName == 'a') { - if (n.className == 'mceMax') { - w.oldPos = w.element.getXY(); - w.oldSize = w.element.getSize(); - - vp = DOM.getViewPort(); - - // Reduce viewport size to avoid scrollbars - vp.w -= 2; - vp.h -= 2; - - w.element.moveTo(vp.x, vp.y); - w.element.resizeTo(vp.w, vp.h); - DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); - DOM.addClass(id + '_wrapper', 'mceMaximized'); - } else if (n.className == 'mceMed') { - // Reset to old size - w.element.moveTo(w.oldPos.x, w.oldPos.y); - w.element.resizeTo(w.oldSize.w, w.oldSize.h); - w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); - - DOM.removeClass(id + '_wrapper', 'mceMaximized'); - } else if (n.className == 'mceMove') - return t._startDrag(id, e, n.className); - else if (DOM.hasClass(n, 'mceResize')) - return t._startDrag(id, e, n.className.substring(13)); - } - }); - - clf = Event.add(id, 'click', function(e) { - var n = e.target; - - t.focus(id); - - if (n.nodeName == 'A' || n.nodeName == 'a') { - switch (n.className) { - case 'mceClose': - t.close(null, id); - return Event.cancel(e); - - case 'mceButton mceOk': - case 'mceButton mceCancel': - f.button_func(n.className == 'mceButton mceOk'); - return Event.cancel(e); - } - } - }); - - // Add window - w = t.windows[id] = { - id : id, - mousedown_func : mdf, - click_func : clf, - element : new Element(id, {blocker : 1, container : ed.getContainer()}), - iframeElement : new Element(id + '_ifr'), - features : f, - deltaWidth : dw, - deltaHeight : dh - }; - - w.iframeElement.on('focus', function() { - t.focus(id); - }); - - // Setup blocker - if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { - DOM.add(DOM.doc.body, 'div', { - id : 'mceModalBlocker', - 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', - style : {zIndex : t.zIndex - 1} - }); - - DOM.show('mceModalBlocker'); // Reduces flicker in IE - } else - DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); - - if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) - DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); - - t.focus(id); - t._fixIELayout(id, 1); - - // Focus ok button - if (DOM.get(id + '_ok')) - DOM.get(id + '_ok').focus(); - - t.count++; - - return w; - }, - - focus : function(id) { - var t = this, w; - - if (w = t.windows[id]) { - w.zIndex = this.zIndex++; - w.element.setStyle('zIndex', w.zIndex); - w.element.update(); - - id = id + '_wrapper'; - DOM.removeClass(t.lastId, 'mceFocus'); - DOM.addClass(id, 'mceFocus'); - t.lastId = id; - } - }, - - _addAll : function(te, ne) { - var i, n, t = this, dom = tinymce.DOM; - - if (is(ne, 'string')) - te.appendChild(dom.doc.createTextNode(ne)); - else if (ne.length) { - te = te.appendChild(dom.create(ne[0], ne[1])); - - for (i=2; i ix) { - fw = w; - ix = w.zIndex; - } - }); - - if (fw) - t.focus(fw.id); - } - }, - - setTitle : function(w, ti) { - var e; - - w = this._findId(w); - - if (e = DOM.get(w + '_title')) - e.innerHTML = DOM.encode(ti); - }, - - alert : function(txt, cb, s) { - var t = this, w; - - w = t.open({ - title : t, - type : 'alert', - button_func : function(s) { - if (cb) - cb.call(s || t, s); - - t.close(null, w.id); - }, - content : DOM.encode(t.editor.getLang(txt, txt)), - inline : 1, - width : 400, - height : 130 - }); - }, - - confirm : function(txt, cb, s) { - var t = this, w; - - w = t.open({ - title : t, - type : 'confirm', - button_func : function(s) { - if (cb) - cb.call(s || t, s); - - t.close(null, w.id); - }, - content : DOM.encode(t.editor.getLang(txt, txt)), - inline : 1, - width : 400, - height : 130 - }); - }, - - // Internal functions - - _findId : function(w) { - var t = this; - - if (typeof(w) == 'string') - return w; - - each(t.windows, function(wo) { - var ifr = DOM.get(wo.id + '_ifr'); - - if (ifr && w == ifr.contentWindow) { - w = wo.id; - return false; - } - }); - - return w; - }, - - _fixIELayout : function(id, s) { - var w, img; - - if (!tinymce.isIE6) - return; - - // Fixes the bug where hover flickers and does odd things in IE6 - each(['n','s','w','e','nw','ne','sw','se'], function(v) { - var e = DOM.get(id + '_resize_' + v); - - DOM.setStyles(e, { - width : s ? e.clientWidth : '', - height : s ? e.clientHeight : '', - cursor : DOM.getStyle(e, 'cursor', 1) - }); - - DOM.setStyle(id + "_bottom", 'bottom', '-1px'); - - e = 0; - }); - - // Fixes graphics glitch - if (w = this.windows[id]) { - // Fixes rendering bug after resize - w.element.hide(); - w.element.show(); - - // Forced a repaint of the window - //DOM.get(id).style.filter = ''; - - // IE has a bug where images used in CSS won't get loaded - // sometimes when the cache in the browser is disabled - // This fix tries to solve it by loading the images using the image object - each(DOM.select('div,a', id), function(e, i) { - if (e.currentStyle.backgroundImage != 'none') { - img = new Image(); - img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); - } - }); - - DOM.get(id).style.filter = ''; - } - } - }); - - // Register plugin - tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); -})(); - +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is; + + tinymce.create('tinymce.plugins.InlinePopups', { + init : function(ed, url) { + // Replace window manager + ed.onBeforeRenderUI.add(function() { + ed.windowManager = new tinymce.InlineWindowManager(ed); + DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css"); + }); + }, + + getInfo : function() { + return { + longname : 'InlinePopups', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', { + InlineWindowManager : function(ed) { + var t = this; + + t.parent(ed); + t.zIndex = 300000; + t.count = 0; + t.windows = {}; + }, + + open : function(f, p) { + var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u; + + f = f || {}; + p = p || {}; + + // Run native windows + if (!f.inline) + return t.parent(f, p); + + // Only store selection if the type is a normal window + if (!f.type) + t.bookmark = ed.selection.getBookmark(1); + + id = DOM.uniqueId(); + vp = DOM.getViewPort(); + f.width = parseInt(f.width || 320); + f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0); + f.min_width = parseInt(f.min_width || 150); + f.min_height = parseInt(f.min_height || 100); + f.max_width = parseInt(f.max_width || 2000); + f.max_height = parseInt(f.max_height || 2000); + f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0))); + f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0))); + f.movable = f.resizable = true; + p.mce_width = f.width; + p.mce_height = f.height; + p.mce_inline = true; + p.mce_window_id = id; + p.mce_auto_focus = f.auto_focus; + + // Transpose +// po = DOM.getPos(ed.getContainer()); +// f.left -= po.x; +// f.top -= po.y; + + t.features = f; + t.params = p; + t.onOpen.dispatch(t, f, p); + + if (f.type) { + opt += ' mceModal'; + + if (f.type) + opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1); + + f.resizable = false; + } + + if (f.statusbar) + opt += ' mceStatusbar'; + + if (f.resizable) + opt += ' mceResizable'; + + if (f.minimizable) + opt += ' mceMinimizable'; + + if (f.maximizable) + opt += ' mceMaximizable'; + + if (f.movable) + opt += ' mceMovable'; + + // Create DOM objects + t._addAll(DOM.doc.body, + ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, + ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt}, + ['div', {id : id + '_top', 'class' : 'mceTop'}, + ['div', {'class' : 'mceLeft'}], + ['div', {'class' : 'mceCenter'}], + ['div', {'class' : 'mceRight'}], + ['span', {id : id + '_title'}, f.title || ''] + ], + + ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, + ['div', {id : id + '_left', 'class' : 'mceLeft'}], + ['span', {id : id + '_content'}], + ['div', {id : id + '_right', 'class' : 'mceRight'}] + ], + + ['div', {id : id + '_bottom', 'class' : 'mceBottom'}, + ['div', {'class' : 'mceLeft'}], + ['div', {'class' : 'mceCenter'}], + ['div', {'class' : 'mceRight'}], + ['span', {id : id + '_status'}, 'Content'] + ], + + ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}], + ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}] + ] + ] + ); + + DOM.setStyles(id, {top : -10000, left : -10000}); + + // Fix gecko rendering bug, where the editors iframe messed with window contents + if (tinymce.isGecko) + DOM.setStyle(id, 'overflow', 'auto'); + + // Measure borders + if (!f.type) { + dw += DOM.get(id + '_left').clientWidth; + dw += DOM.get(id + '_right').clientWidth; + dh += DOM.get(id + '_top').clientHeight; + dh += DOM.get(id + '_bottom').clientHeight; + } + + // Resize window + DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); + + u = f.url || f.file; + if (u) { + if (tinymce.relaxedDomain) + u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; + + u = tinymce._addVer(u); + } + + if (!f.type) { + DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); + DOM.setStyles(id + '_ifr', {width : f.width, height : f.height}); + DOM.setAttrib(id + '_ifr', 'src', u); + } else { + DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok'); + + if (f.type == 'confirm') + DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel'); + + DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'}); + DOM.setHTML(id + '_content', f.content.replace('\n', '
    ')); + } + + // Register events + mdf = Event.add(id, 'mousedown', function(e) { + var n = e.target, w, vp; + + w = t.windows[id]; + t.focus(id); + + if (n.nodeName == 'A' || n.nodeName == 'a') { + if (n.className == 'mceMax') { + w.oldPos = w.element.getXY(); + w.oldSize = w.element.getSize(); + + vp = DOM.getViewPort(); + + // Reduce viewport size to avoid scrollbars + vp.w -= 2; + vp.h -= 2; + + w.element.moveTo(vp.x, vp.y); + w.element.resizeTo(vp.w, vp.h); + DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); + DOM.addClass(id + '_wrapper', 'mceMaximized'); + } else if (n.className == 'mceMed') { + // Reset to old size + w.element.moveTo(w.oldPos.x, w.oldPos.y); + w.element.resizeTo(w.oldSize.w, w.oldSize.h); + w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); + + DOM.removeClass(id + '_wrapper', 'mceMaximized'); + } else if (n.className == 'mceMove') + return t._startDrag(id, e, n.className); + else if (DOM.hasClass(n, 'mceResize')) + return t._startDrag(id, e, n.className.substring(13)); + } + }); + + clf = Event.add(id, 'click', function(e) { + var n = e.target; + + t.focus(id); + + if (n.nodeName == 'A' || n.nodeName == 'a') { + switch (n.className) { + case 'mceClose': + t.close(null, id); + return Event.cancel(e); + + case 'mceButton mceOk': + case 'mceButton mceCancel': + f.button_func(n.className == 'mceButton mceOk'); + return Event.cancel(e); + } + } + }); + + // Add window + w = t.windows[id] = { + id : id, + mousedown_func : mdf, + click_func : clf, + element : new Element(id, {blocker : 1, container : ed.getContainer()}), + iframeElement : new Element(id + '_ifr'), + features : f, + deltaWidth : dw, + deltaHeight : dh + }; + + w.iframeElement.on('focus', function() { + t.focus(id); + }); + + // Setup blocker + if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { + DOM.add(DOM.doc.body, 'div', { + id : 'mceModalBlocker', + 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', + style : {zIndex : t.zIndex - 1} + }); + + DOM.show('mceModalBlocker'); // Reduces flicker in IE + } else + DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); + + if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) + DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); + + t.focus(id); + t._fixIELayout(id, 1); + + // Focus ok button + if (DOM.get(id + '_ok')) + DOM.get(id + '_ok').focus(); + + t.count++; + + return w; + }, + + focus : function(id) { + var t = this, w; + + if (w = t.windows[id]) { + w.zIndex = this.zIndex++; + w.element.setStyle('zIndex', w.zIndex); + w.element.update(); + + id = id + '_wrapper'; + DOM.removeClass(t.lastId, 'mceFocus'); + DOM.addClass(id, 'mceFocus'); + t.lastId = id; + } + }, + + _addAll : function(te, ne) { + var i, n, t = this, dom = tinymce.DOM; + + if (is(ne, 'string')) + te.appendChild(dom.doc.createTextNode(ne)); + else if (ne.length) { + te = te.appendChild(dom.create(ne[0], ne[1])); + + for (i=2; i ix) { + fw = w; + ix = w.zIndex; + } + }); + + if (fw) + t.focus(fw.id); + } + }, + + setTitle : function(w, ti) { + var e; + + w = this._findId(w); + + if (e = DOM.get(w + '_title')) + e.innerHTML = DOM.encode(ti); + }, + + alert : function(txt, cb, s) { + var t = this, w; + + w = t.open({ + title : t, + type : 'alert', + button_func : function(s) { + if (cb) + cb.call(s || t, s); + + t.close(null, w.id); + }, + content : DOM.encode(t.editor.getLang(txt, txt)), + inline : 1, + width : 400, + height : 130 + }); + }, + + confirm : function(txt, cb, s) { + var t = this, w; + + w = t.open({ + title : t, + type : 'confirm', + button_func : function(s) { + if (cb) + cb.call(s || t, s); + + t.close(null, w.id); + }, + content : DOM.encode(t.editor.getLang(txt, txt)), + inline : 1, + width : 400, + height : 130 + }); + }, + + // Internal functions + + _findId : function(w) { + var t = this; + + if (typeof(w) == 'string') + return w; + + each(t.windows, function(wo) { + var ifr = DOM.get(wo.id + '_ifr'); + + if (ifr && w == ifr.contentWindow) { + w = wo.id; + return false; + } + }); + + return w; + }, + + _fixIELayout : function(id, s) { + var w, img; + + if (!tinymce.isIE6) + return; + + // Fixes the bug where hover flickers and does odd things in IE6 + each(['n','s','w','e','nw','ne','sw','se'], function(v) { + var e = DOM.get(id + '_resize_' + v); + + DOM.setStyles(e, { + width : s ? e.clientWidth : '', + height : s ? e.clientHeight : '', + cursor : DOM.getStyle(e, 'cursor', 1) + }); + + DOM.setStyle(id + "_bottom", 'bottom', '-1px'); + + e = 0; + }); + + // Fixes graphics glitch + if (w = this.windows[id]) { + // Fixes rendering bug after resize + w.element.hide(); + w.element.show(); + + // Forced a repaint of the window + //DOM.get(id).style.filter = ''; + + // IE has a bug where images used in CSS won't get loaded + // sometimes when the cache in the browser is disabled + // This fix tries to solve it by loading the images using the image object + each(DOM.select('div,a', id), function(e, i) { + if (e.currentStyle.backgroundImage != 'none') { + img = new Image(); + img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); + } + }); + + DOM.get(id).style.filter = ''; + } + } + }); + + // Register plugin + tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); +})(); + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/template.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/template.htm old mode 100755 new mode 100644 index f9ec6421..c98fe41a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/template.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/inlinepopups/template.htm @@ -1,387 +1,387 @@ - - - -Template for dialogs - - - - -
    -
    -
    -
    -
    -
    -
    - Blured -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Focused -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Statusbar -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Statusbar, Resizable -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Resizable, Maximizable -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Blurred, Maximizable, Statusbar, Resizable -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Maximized, Maximizable, Minimizable -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Blured -
    - -
    -
    - Content -
    -
    - -
    -
    -
    -
    - Statusbar text. -
    - - - - - - - - - - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - Alert -
    - -
    -
    - - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - -
    -
    -
    - -
    -
    -
    -
    -
    - - - Ok - -
    -
    - -
    -
    -
    -
    -
    -
    - Confirm -
    - -
    -
    - - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - -
    -
    -
    - -
    -
    -
    -
    -
    - - - Ok - Cancel - -
    -
    -
    - - - + + + +Template for dialogs + + + + +
    +
    +
    +
    +
    +
    +
    + Blured +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Focused +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Statusbar +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Statusbar, Resizable +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Resizable, Maximizable +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Blurred, Maximizable, Statusbar, Resizable +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Maximized, Maximizable, Minimizable +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Blured +
    + +
    +
    + Content +
    +
    + +
    +
    +
    +
    + Statusbar text. +
    + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + Alert +
    + +
    +
    + + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + +
    +
    +
    + +
    +
    +
    +
    +
    + + + Ok + +
    +
    + +
    +
    +
    +
    +
    +
    + Confirm +
    + +
    +
    + + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + +
    +
    +
    + +
    +
    +
    +
    +
    + + + Ok + Cancel + +
    +
    +
    + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js old mode 100755 new mode 100644 index 181c791e..c5d9a416 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js @@ -1,83 +1,83 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.InsertDateTime', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - ed.addCommand('mceInsertDate', function() { - var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt'))); - - ed.execCommand('mceInsertContent', false, str); - }); - - ed.addCommand('mceInsertTime', function() { - var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt'))); - - ed.execCommand('mceInsertContent', false, str); - }); - - ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'}); - ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'}); - }, - - getInfo : function() { - return { - longname : 'Insert date/time', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - _getDateTime : function(d, fmt) { - var ed = this.editor; - - function addZeros(value, len) { - value = "" + value; - - if (value.length < len) { - for (var i=0; i<(len-value.length); i++) - value = "0" + value; - } - - return value; - }; - - fmt = fmt.replace("%D", "%m/%d/%y"); - fmt = fmt.replace("%r", "%I:%M:%S %p"); - fmt = fmt.replace("%Y", "" + d.getFullYear()); - fmt = fmt.replace("%y", "" + d.getYear()); - fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); - fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); - fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); - fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); - fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); - fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); - fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); - fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]); - fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]); - fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]); - fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]); - fmt = fmt.replace("%%", "%"); - - return fmt; - } - }); - - // Register plugin - tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.InsertDateTime', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + ed.addCommand('mceInsertDate', function() { + var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt'))); + + ed.execCommand('mceInsertContent', false, str); + }); + + ed.addCommand('mceInsertTime', function() { + var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt'))); + + ed.execCommand('mceInsertContent', false, str); + }); + + ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'}); + ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'}); + }, + + getInfo : function() { + return { + longname : 'Insert date/time', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _getDateTime : function(d, fmt) { + var ed = this.editor; + + function addZeros(value, len) { + value = "" + value; + + if (value.length < len) { + for (var i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + }; + + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]); + fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]); + fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]); + fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]); + fmt = fmt.replace("%%", "%"); + + return fmt; + } + }); + + // Register plugin + tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js old mode 100755 new mode 100644 index d5aa8654..701de1ae --- a/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js @@ -1,212 +1,212 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.Layer', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceInsertLayer', t._insertLayer, t); - - ed.addCommand('mceMoveForward', function() { - t._move(1); - }); - - ed.addCommand('mceMoveBackward', function() { - t._move(-1); - }); - - ed.addCommand('mceMakeAbsolute', function() { - t._toggleAbsolute(); - }); - - // Register buttons - ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'}); - ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'}); - ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'}); - ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'}); - - ed.onInit.add(function() { - if (tinymce.isIE) - ed.getDoc().execCommand('2D-Position', false, true); - }); - - ed.onNodeChange.add(t._nodeChange, t); - ed.onVisualAid.add(t._visualAid, t); - }, - - getInfo : function() { - return { - longname : 'Layer', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - _nodeChange : function(ed, cm, n) { - var le, p; - - le = this._getParentLayer(n); - p = ed.dom.getParent(n, 'DIV,P,IMG'); - - if (!p) { - cm.setDisabled('absolute', 1); - cm.setDisabled('moveforward', 1); - cm.setDisabled('movebackward', 1); - } else { - cm.setDisabled('absolute', 0); - cm.setDisabled('moveforward', !le); - cm.setDisabled('movebackward', !le); - cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute"); - } - }, - - // Private methods - - _visualAid : function(ed, e, s) { - var dom = ed.dom; - - tinymce.each(dom.select('div,p', e), function(e) { - if (/^(absolute|relative|static)$/i.test(e.style.position)) { - if (s) - dom.addClass(e, 'mceItemVisualAid'); - else - dom.removeClass(e, 'mceItemVisualAid'); - } - }); - }, - - _move : function(d) { - var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl; - - nl = []; - tinymce.walk(ed.getBody(), function(n) { - if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position)) - nl.push(n); - }, 'childNodes'); - - // Find z-indexes - for (i=0; i -1) { - nl[ci].style.zIndex = z[fi]; - nl[fi].style.zIndex = z[ci]; - } else { - if (z[ci] > 0) - nl[ci].style.zIndex = z[ci] - 1; - } - } else { - // Move forward - - // Try find a higher one - for (i=0; i z[ci]) { - fi = i; - break; - } - } - - if (fi > -1) { - nl[ci].style.zIndex = z[fi]; - nl[fi].style.zIndex = z[ci]; - } else - nl[ci].style.zIndex = z[ci] + 1; - } - - ed.execCommand('mceRepaint'); - }, - - _getParentLayer : function(n) { - return this.editor.dom.getParent(n, function(n) { - return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position); - }); - }, - - _insertLayer : function() { - var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*')); - - ed.dom.add(ed.getBody(), 'div', { - style : { - position : 'absolute', - left : p.x, - top : (p.y > 20 ? p.y : 20), - width : 100, - height : 100 - }, - 'class' : 'mceItemVisualAid' - }, ed.selection.getContent() || ed.getLang('layer.content')); - }, - - _toggleAbsolute : function() { - var ed = this.editor, le = this._getParentLayer(ed.selection.getNode()); - - if (!le) - le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG'); - - if (le) { - if (le.style.position.toLowerCase() == "absolute") { - ed.dom.setStyles(le, { - position : '', - left : '', - top : '', - width : '', - height : '' - }); - - ed.dom.removeClass(le, 'mceItemVisualAid'); - } else { - if (le.style.left == "") - le.style.left = 20 + 'px'; - - if (le.style.top == "") - le.style.top = 20 + 'px'; - - if (le.style.width == "") - le.style.width = le.width ? (le.width + 'px') : '100px'; - - if (le.style.height == "") - le.style.height = le.height ? (le.height + 'px') : '100px'; - - le.style.position = "absolute"; - ed.addVisual(ed.getBody()); - } - - ed.execCommand('mceRepaint'); - ed.nodeChanged(); - } - } - }); - - // Register plugin - tinymce.PluginManager.add('layer', tinymce.plugins.Layer); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Layer', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceInsertLayer', t._insertLayer, t); + + ed.addCommand('mceMoveForward', function() { + t._move(1); + }); + + ed.addCommand('mceMoveBackward', function() { + t._move(-1); + }); + + ed.addCommand('mceMakeAbsolute', function() { + t._toggleAbsolute(); + }); + + // Register buttons + ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'}); + ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'}); + ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'}); + ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'}); + + ed.onInit.add(function() { + if (tinymce.isIE) + ed.getDoc().execCommand('2D-Position', false, true); + }); + + ed.onNodeChange.add(t._nodeChange, t); + ed.onVisualAid.add(t._visualAid, t); + }, + + getInfo : function() { + return { + longname : 'Layer', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _nodeChange : function(ed, cm, n) { + var le, p; + + le = this._getParentLayer(n); + p = ed.dom.getParent(n, 'DIV,P,IMG'); + + if (!p) { + cm.setDisabled('absolute', 1); + cm.setDisabled('moveforward', 1); + cm.setDisabled('movebackward', 1); + } else { + cm.setDisabled('absolute', 0); + cm.setDisabled('moveforward', !le); + cm.setDisabled('movebackward', !le); + cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute"); + } + }, + + // Private methods + + _visualAid : function(ed, e, s) { + var dom = ed.dom; + + tinymce.each(dom.select('div,p', e), function(e) { + if (/^(absolute|relative|static)$/i.test(e.style.position)) { + if (s) + dom.addClass(e, 'mceItemVisualAid'); + else + dom.removeClass(e, 'mceItemVisualAid'); + } + }); + }, + + _move : function(d) { + var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl; + + nl = []; + tinymce.walk(ed.getBody(), function(n) { + if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position)) + nl.push(n); + }, 'childNodes'); + + // Find z-indexes + for (i=0; i -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else { + if (z[ci] > 0) + nl[ci].style.zIndex = z[ci] - 1; + } + } else { + // Move forward + + // Try find a higher one + for (i=0; i z[ci]) { + fi = i; + break; + } + } + + if (fi > -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else + nl[ci].style.zIndex = z[ci] + 1; + } + + ed.execCommand('mceRepaint'); + }, + + _getParentLayer : function(n) { + return this.editor.dom.getParent(n, function(n) { + return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position); + }); + }, + + _insertLayer : function() { + var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*')); + + ed.dom.add(ed.getBody(), 'div', { + style : { + position : 'absolute', + left : p.x, + top : (p.y > 20 ? p.y : 20), + width : 100, + height : 100 + }, + 'class' : 'mceItemVisualAid' + }, ed.selection.getContent() || ed.getLang('layer.content')); + }, + + _toggleAbsolute : function() { + var ed = this.editor, le = this._getParentLayer(ed.selection.getNode()); + + if (!le) + le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG'); + + if (le) { + if (le.style.position.toLowerCase() == "absolute") { + ed.dom.setStyles(le, { + position : '', + left : '', + top : '', + width : '', + height : '' + }); + + ed.dom.removeClass(le, 'mceItemVisualAid'); + } else { + if (le.style.left == "") + le.style.left = 20 + 'px'; + + if (le.style.top == "") + le.style.top = 20 + 'px'; + + if (le.style.width == "") + le.style.width = le.width ? (le.width + 'px') : '100px'; + + if (le.style.height == "") + le.style.height = le.height ? (le.height + 'px') : '100px'; + + le.style.position = "absolute"; + ed.addVisual(ed.getBody()); + } + + ed.execCommand('mceRepaint'); + ed.nodeChanged(); + } + } + }); + + // Register plugin + tinymce.PluginManager.add('layer', tinymce.plugins.Layer); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js old mode 100755 new mode 100644 index e852da15..3bbdb7b4 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js @@ -1,136 +1,136 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - * - * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align - * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash - * - * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are - * not apart of the newer specifications for HTML and XHTML. - */ - -(function(tinymce) { - // Override inline_styles setting to force TinyMCE to produce deprecated contents - tinymce.onAddEditor.addToTop(function(tinymce, editor) { - editor.settings.inline_styles = false; - }); - - // Create the legacy ouput plugin - tinymce.create('tinymce.plugins.LegacyOutput', { - init : function(editor) { - editor.onInit.add(function() { - var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', - fontSizes = tinymce.explode(editor.settings.font_size_style_values), - serializer = editor.serializer; - - // Override some internal formats to produce legacy elements and attributes - editor.formatter.register({ - // Change alignment formats to use the deprecated align attribute - alignleft : {selector : alignElements, attributes : {align : 'left'}}, - aligncenter : {selector : alignElements, attributes : {align : 'center'}}, - alignright : {selector : alignElements, attributes : {align : 'right'}}, - alignfull : {selector : alignElements, attributes : {align : 'full'}}, - - // Change the basic formatting elements to use deprecated element types - bold : {inline : 'b'}, - italic : {inline : 'i'}, - underline : {inline : 'u'}, - strikethrough : {inline : 'strike'}, - - // Change font size and font family to use the deprecated font element - fontname : {inline : 'font', attributes : {face : '%value'}}, - fontsize : { - inline : 'font', - attributes : { - size : function(vars) { - return tinymce.inArray(fontSizes, vars.value) + 1; - } - } - }, - - // Setup font elements for colors as well - forecolor : {inline : 'font', styles : {color : '%value'}}, - hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}} - }); - - // Force parsing of the serializer rules - serializer._setup(); - - // Check that deprecated elements are allowed if not add them - tinymce.each('b,i,u,strike'.split(','), function(name) { - var rule = serializer.rules[name]; - - if (!rule) - serializer.addRules(name); - }); - - // Add font element if it's missing - if (!serializer.rules["font"]) - serializer.addRules("font[face|size|color|style]"); - - // Add the missing and depreacted align attribute for the serialization engine - tinymce.each(alignElements.split(','), function(name) { - var rule = serializer.rules[name], found; - - if (rule) { - tinymce.each(rule.attribs, function(name, attr) { - if (attr.name == 'align') { - found = true; - return false; - } - }); - - if (!found) - rule.attribs.push({name : 'align'}); - } - }); - - // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes - editor.onNodeChange.add(function(editor, control_manager) { - var control, fontElm, fontName, fontSize; - - // Find font element get it's name and size - fontElm = editor.dom.getParent(editor.selection.getNode(), 'font'); - if (fontElm) { - fontName = fontElm.face; - fontSize = fontElm.size; - } - - // Select/unselect the font name in droplist - if (control = control_manager.get('fontselect')) { - control.select(function(value) { - return value == fontName; - }); - } - - // Select/unselect the font size in droplist - if (control = control_manager.get('fontsizeselect')) { - control.select(function(value) { - var index = tinymce.inArray(fontSizes, value.fontSize); - - return index + 1 == fontSize; - }); - } - }); - }); - }, - - getInfo : function() { - return { - longname : 'LegacyOutput', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + * + * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align + * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash + * + * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are + * not apart of the newer specifications for HTML and XHTML. + */ + +(function(tinymce) { + // Override inline_styles setting to force TinyMCE to produce deprecated contents + tinymce.onAddEditor.addToTop(function(tinymce, editor) { + editor.settings.inline_styles = false; + }); + + // Create the legacy ouput plugin + tinymce.create('tinymce.plugins.LegacyOutput', { + init : function(editor) { + editor.onInit.add(function() { + var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', + fontSizes = tinymce.explode(editor.settings.font_size_style_values), + serializer = editor.serializer; + + // Override some internal formats to produce legacy elements and attributes + editor.formatter.register({ + // Change alignment formats to use the deprecated align attribute + alignleft : {selector : alignElements, attributes : {align : 'left'}}, + aligncenter : {selector : alignElements, attributes : {align : 'center'}}, + alignright : {selector : alignElements, attributes : {align : 'right'}}, + alignfull : {selector : alignElements, attributes : {align : 'full'}}, + + // Change the basic formatting elements to use deprecated element types + bold : {inline : 'b'}, + italic : {inline : 'i'}, + underline : {inline : 'u'}, + strikethrough : {inline : 'strike'}, + + // Change font size and font family to use the deprecated font element + fontname : {inline : 'font', attributes : {face : '%value'}}, + fontsize : { + inline : 'font', + attributes : { + size : function(vars) { + return tinymce.inArray(fontSizes, vars.value) + 1; + } + } + }, + + // Setup font elements for colors as well + forecolor : {inline : 'font', styles : {color : '%value'}}, + hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}} + }); + + // Force parsing of the serializer rules + serializer._setup(); + + // Check that deprecated elements are allowed if not add them + tinymce.each('b,i,u,strike'.split(','), function(name) { + var rule = serializer.rules[name]; + + if (!rule) + serializer.addRules(name); + }); + + // Add font element if it's missing + if (!serializer.rules["font"]) + serializer.addRules("font[face|size|color|style]"); + + // Add the missing and depreacted align attribute for the serialization engine + tinymce.each(alignElements.split(','), function(name) { + var rule = serializer.rules[name], found; + + if (rule) { + tinymce.each(rule.attribs, function(name, attr) { + if (attr.name == 'align') { + found = true; + return false; + } + }); + + if (!found) + rule.attribs.push({name : 'align'}); + } + }); + + // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes + editor.onNodeChange.add(function(editor, control_manager) { + var control, fontElm, fontName, fontSize; + + // Find font element get it's name and size + fontElm = editor.dom.getParent(editor.selection.getNode(), 'font'); + if (fontElm) { + fontName = fontElm.face; + fontSize = fontElm.size; + } + + // Select/unselect the font name in droplist + if (control = control_manager.get('fontselect')) { + control.select(function(value) { + return value == fontName; + }); + } + + // Select/unselect the font size in droplist + if (control = control_manager.get('fontsizeselect')) { + control.select(function(value) { + var index = tinymce.inArray(fontSizes, value.fontSize); + + return index + 1 == fontSize; + }); + } + }); + }); + }, + + getInfo : function() { + return { + longname : 'LegacyOutput', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput); })(tinymce); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/content.css b/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/content.css old mode 100755 new mode 100644 index 1bf6a758..7739381d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/content.css @@ -1,6 +1,6 @@ -.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;} -.mceItemShockWave {background-image: url(../img/shockwave.gif);} -.mceItemFlash {background-image:url(../img/flash.gif);} -.mceItemQuickTime {background-image:url(../img/quicktime.gif);} -.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);} -.mceItemRealMedia {background-image:url(../img/realmedia.gif);} +.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;} +.mceItemShockWave {background-image: url(../img/shockwave.gif);} +.mceItemFlash {background-image:url(../img/flash.gif);} +.mceItemQuickTime {background-image:url(../img/quicktime.gif);} +.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);} +.mceItemRealMedia {background-image:url(../img/realmedia.gif);} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/media.css b/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/media.css old mode 100755 new mode 100644 index 2d087944..7b2253ba --- a/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/media.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/media/css/media.css @@ -1,16 +1,16 @@ -#id, #name, #hspace, #vspace, #class_name, #align { width: 100px } -#hspace, #vspace { width: 50px } -#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px } -#flash_base, #flash_flashvars { width: 240px } -#width, #height { width: 40px } -#src, #media_type { width: 250px } -#class { width: 120px } -#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto } -.panel_wrapper div.current { height: 390px; overflow: auto } -#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none } -.mceAddSelectValue { background-color: #DDDDDD } -#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px } -#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px } -#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px } -#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px } -#qt_qtsrc { width: 200px } +#id, #name, #hspace, #vspace, #class_name, #align { width: 100px } +#hspace, #vspace { width: 50px } +#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px } +#flash_base, #flash_flashvars { width: 240px } +#width, #height { width: 40px } +#src, #media_type { width: 250px } +#class { width: 120px } +#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto } +.panel_wrapper div.current { height: 390px; overflow: auto } +#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none } +.mceAddSelectValue { background-color: #DDDDDD } +#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px } +#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px } +#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px } +#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px } +#qt_qtsrc { width: 200px } diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin_src.js old mode 100755 new mode 100644 index fc84e5b6..32918532 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/media/editor_plugin_src.js @@ -1,414 +1,414 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var each = tinymce.each; - - tinymce.create('tinymce.plugins.MediaPlugin', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - t.url = url; - - function isMediaElm(n) { - return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className); - }; - - ed.onPreInit.add(function() { - // Force in _value parameter this extra parameter is required for older Opera versions - ed.serializer.addRules('param[name|value|_mce_value]'); - }); - - // Register commands - ed.addCommand('mceMedia', function() { - ed.windowManager.open({ - file : url + '/media.htm', - width : 430 + parseInt(ed.getLang('media.delta_width', 0)), - height : 470 + parseInt(ed.getLang('media.delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'}); - - ed.onNodeChange.add(function(ed, cm, n) { - cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n)); - }); - - ed.onInit.add(function() { - var lo = { - mceItemFlash : 'flash', - mceItemShockWave : 'shockwave', - mceItemWindowsMedia : 'windowsmedia', - mceItemQuickTime : 'quicktime', - mceItemRealMedia : 'realmedia' - }; - - ed.selection.onSetContent.add(function() { - t._spansToImgs(ed.getBody()); - }); - - ed.selection.onBeforeSetContent.add(t._objectsToSpans, t); - - if (ed.settings.content_css !== false) - ed.dom.loadCSS(url + "/css/content.css"); - - if (ed.theme && ed.theme.onResolveName) { - ed.theme.onResolveName.add(function(th, o) { - if (o.name == 'img') { - each(lo, function(v, k) { - if (ed.dom.hasClass(o.node, k)) { - o.name = v; - o.title = ed.dom.getAttrib(o.node, 'title'); - return false; - } - }); - } - }); - } - - if (ed && ed.plugins.contextmenu) { - ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { - if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) { - m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'}); - } - }); - } - }); - - ed.onBeforeSetContent.add(t._objectsToSpans, t); - - ed.onSetContent.add(function() { - t._spansToImgs(ed.getBody()); - }); - - ed.onPreProcess.add(function(ed, o) { - var dom = ed.dom; - - if (o.set) { - t._spansToImgs(o.node); - - each(dom.select('IMG', o.node), function(n) { - var p; - - if (isMediaElm(n)) { - p = t._parse(n.title); - dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100)); - dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100)); - } - }); - } - - if (o.get) { - each(dom.select('IMG', o.node), function(n) { - var ci, cb, mt; - - if (ed.getParam('media_use_script')) { - if (isMediaElm(n)) - n.className = n.className.replace(/mceItem/g, 'mceTemp'); - - return; - } - - switch (n.className) { - case 'mceItemFlash': - ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - mt = 'application/x-shockwave-flash'; - break; - - case 'mceItemShockWave': - ci = '166b1bca-3f9c-11cf-8075-444553540000'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; - mt = 'application/x-director'; - break; - - case 'mceItemWindowsMedia': - ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6'; - cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - mt = 'application/x-mplayer2'; - break; - - case 'mceItemQuickTime': - ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b'; - cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; - mt = 'video/quicktime'; - break; - - case 'mceItemRealMedia': - ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - mt = 'audio/x-pn-realaudio-plugin'; - break; - } - - if (ci) { - dom.replace(t._buildObj({ - classid : ci, - codebase : cb, - type : mt - }, n), n); - } - }); - } - }); - - ed.onPostProcess.add(function(ed, o) { - o.content = o.content.replace(/_mce_value=/g, 'value='); - }); - - function getAttr(s, n) { - n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s); - - return n ? ed.dom.decode(n[1]) : ''; - }; - - ed.onPostProcess.add(function(ed, o) { - if (ed.getParam('media_use_script')) { - o.content = o.content.replace(/]+>/g, function(im) { - var cl = getAttr(im, 'class'); - - if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) { - at = t._parse(getAttr(im, 'title')); - at.width = getAttr(im, 'width'); - at.height = getAttr(im, 'height'); - im = ''; - } - - return im; - }); - } - }); - }, - - getInfo : function() { - return { - longname : 'Media', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - _objectsToSpans : function(ed, o) { - var t = this, h = o.content; - - h = h.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { - var o = t._parse(c); - - return '' - }); - - h = h.replace(/]*)>/gi, ''); - h = h.replace(/]*)\/?>/gi, ''); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/<\/(object)([^>]*)>/gi, ''); - h = h.replace(/<\/embed>/gi, ''); - h = h.replace(/]*)>/gi, function(a, b) {return ''}); - h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam">'); - - o.content = h; - }, - - _buildObj : function(o, n) { - var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc; - - stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash'; - - p.width = o.width = dom.getAttrib(n, 'width') || 100; - p.height = o.height = dom.getAttrib(n, 'height') || 100; - - if (p.src) - p.src = ed.convertURL(p.src, 'src', n); - - if (stc) { - ob = dom.create('span', { - id : p.id, - _mce_name : 'object', - type : 'application/x-shockwave-flash', - data : p.src, - style : dom.getAttrib(n, 'style'), - width : o.width, - height : o.height - }); - } else { - ob = dom.create('span', { - id : p.id, - _mce_name : 'object', - classid : "clsid:" + o.classid, - style : dom.getAttrib(n, 'style'), - codebase : o.codebase, - width : o.width, - height : o.height - }); - } - - each (p, function(v, k) { - if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) { - // Use url instead of src in IE for Windows media - if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url) - k = 'url'; - - if (v) - dom.add(ob, 'span', {_mce_name : 'param', name : k, '_mce_value' : v}); - } - }); - - if (!stc) - dom.add(ob, 'span', tinymce.extend({_mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p)); - - return ob; - }, - - _spansToImgs : function(p) { - var t = this, dom = t.editor.dom, im, ci; - - each(dom.select('span', p), function(n) { - // Convert object into image - if (dom.getAttrib(n, 'class') == 'mceItemObject') { - ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, ''); - - switch (ci) { - case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000': - dom.replace(t._createImg('mceItemFlash', n), n); - break; - - case 'clsid:166b1bca-3f9c-11cf-8075-444553540000': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; - - case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6': - case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95': - case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a': - dom.replace(t._createImg('mceItemWindowsMedia', n), n); - break; - - case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; - - case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; - - default: - dom.replace(t._createImg('mceItemFlash', n), n); - } - - return; - } - - // Convert embed into image - if (dom.getAttrib(n, 'class') == 'mceItemEmbed') { - switch (dom.getAttrib(n, 'type')) { - case 'application/x-shockwave-flash': - dom.replace(t._createImg('mceItemFlash', n), n); - break; - - case 'application/x-director': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; - - case 'application/x-mplayer2': - dom.replace(t._createImg('mceItemWindowsMedia', n), n); - break; - - case 'video/quicktime': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; - - case 'audio/x-pn-realaudio-plugin': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; - - default: - dom.replace(t._createImg('mceItemFlash', n), n); - } - } - }); - }, - - _createImg : function(cl, n) { - var im, dom = this.editor.dom, pa = {}, ti = '', args; - - args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data']; - - // Create image - im = dom.create('img', { - src : this.url + '/img/trans.gif', - width : dom.getAttrib(n, 'width') || 100, - height : dom.getAttrib(n, 'height') || 100, - style : dom.getAttrib(n, 'style'), - 'class' : cl - }); - - // Setup base parameters - each(args, function(na) { - var v = dom.getAttrib(n, na); - - if (v) - pa[na] = v; - }); - - // Add optional parameters - each(dom.select('span', n), function(n) { - if (dom.hasClass(n, 'mceItemParam')) - pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value'); - }); - - // Use src not movie - if (pa.movie) { - pa.src = pa.movie; - delete pa.movie; - } - - // No src try data - if (!pa.src) { - pa.src = pa.data; - delete pa.data; - } - - // Merge with embed args - n = dom.select('.mceItemEmbed', n)[0]; - if (n) { - each(args, function(na) { - var v = dom.getAttrib(n, na); - - if (v && !pa[na]) - pa[na] = v; - }); - } - - delete pa.width; - delete pa.height; - - im.title = this._serialize(pa); - - return im; - }, - - _parse : function(s) { - return tinymce.util.JSON.parse('{' + s + '}'); - }, - - _serialize : function(o) { - return tinymce.util.JSON.serialize(o).replace(/[{}]/g, ''); - } - }); - - // Register plugin - tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var each = tinymce.each; + + tinymce.create('tinymce.plugins.MediaPlugin', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + t.url = url; + + function isMediaElm(n) { + return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className); + }; + + ed.onPreInit.add(function() { + // Force in _value parameter this extra parameter is required for older Opera versions + ed.serializer.addRules('param[name|value|_mce_value]'); + }); + + // Register commands + ed.addCommand('mceMedia', function() { + ed.windowManager.open({ + file : url + '/media.htm', + width : 430 + parseInt(ed.getLang('media.delta_width', 0)), + height : 470 + parseInt(ed.getLang('media.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'}); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n)); + }); + + ed.onInit.add(function() { + var lo = { + mceItemFlash : 'flash', + mceItemShockWave : 'shockwave', + mceItemWindowsMedia : 'windowsmedia', + mceItemQuickTime : 'quicktime', + mceItemRealMedia : 'realmedia' + }; + + ed.selection.onSetContent.add(function() { + t._spansToImgs(ed.getBody()); + }); + + ed.selection.onBeforeSetContent.add(t._objectsToSpans, t); + + if (ed.settings.content_css !== false) + ed.dom.loadCSS(url + "/css/content.css"); + + if (ed.theme && ed.theme.onResolveName) { + ed.theme.onResolveName.add(function(th, o) { + if (o.name == 'img') { + each(lo, function(v, k) { + if (ed.dom.hasClass(o.node, k)) { + o.name = v; + o.title = ed.dom.getAttrib(o.node, 'title'); + return false; + } + }); + } + }); + } + + if (ed && ed.plugins.contextmenu) { + ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { + if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) { + m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'}); + } + }); + } + }); + + ed.onBeforeSetContent.add(t._objectsToSpans, t); + + ed.onSetContent.add(function() { + t._spansToImgs(ed.getBody()); + }); + + ed.onPreProcess.add(function(ed, o) { + var dom = ed.dom; + + if (o.set) { + t._spansToImgs(o.node); + + each(dom.select('IMG', o.node), function(n) { + var p; + + if (isMediaElm(n)) { + p = t._parse(n.title); + dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100)); + dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100)); + } + }); + } + + if (o.get) { + each(dom.select('IMG', o.node), function(n) { + var ci, cb, mt; + + if (ed.getParam('media_use_script')) { + if (isMediaElm(n)) + n.className = n.className.replace(/mceItem/g, 'mceTemp'); + + return; + } + + switch (n.className) { + case 'mceItemFlash': + ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'application/x-shockwave-flash'; + break; + + case 'mceItemShockWave': + ci = '166b1bca-3f9c-11cf-8075-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + mt = 'application/x-director'; + break; + + case 'mceItemWindowsMedia': + ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6'; + cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + mt = 'application/x-mplayer2'; + break; + + case 'mceItemQuickTime': + ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b'; + cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + mt = 'video/quicktime'; + break; + + case 'mceItemRealMedia': + ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'audio/x-pn-realaudio-plugin'; + break; + } + + if (ci) { + dom.replace(t._buildObj({ + classid : ci, + codebase : cb, + type : mt + }, n), n); + } + }); + } + }); + + ed.onPostProcess.add(function(ed, o) { + o.content = o.content.replace(/_mce_value=/g, 'value='); + }); + + function getAttr(s, n) { + n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s); + + return n ? ed.dom.decode(n[1]) : ''; + }; + + ed.onPostProcess.add(function(ed, o) { + if (ed.getParam('media_use_script')) { + o.content = o.content.replace(/]+>/g, function(im) { + var cl = getAttr(im, 'class'); + + if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) { + at = t._parse(getAttr(im, 'title')); + at.width = getAttr(im, 'width'); + at.height = getAttr(im, 'height'); + im = ''; + } + + return im; + }); + } + }); + }, + + getInfo : function() { + return { + longname : 'Media', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + _objectsToSpans : function(ed, o) { + var t = this, h = o.content; + + h = h.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { + var o = t._parse(c); + + return '' + }); + + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)\/?>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/<\/(object)([^>]*)>/gi, ''); + h = h.replace(/<\/embed>/gi, ''); + h = h.replace(/]*)>/gi, function(a, b) {return ''}); + h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam">'); + + o.content = h; + }, + + _buildObj : function(o, n) { + var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc; + + stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash'; + + p.width = o.width = dom.getAttrib(n, 'width') || 100; + p.height = o.height = dom.getAttrib(n, 'height') || 100; + + if (p.src) + p.src = ed.convertURL(p.src, 'src', n); + + if (stc) { + ob = dom.create('span', { + id : p.id, + _mce_name : 'object', + type : 'application/x-shockwave-flash', + data : p.src, + style : dom.getAttrib(n, 'style'), + width : o.width, + height : o.height + }); + } else { + ob = dom.create('span', { + id : p.id, + _mce_name : 'object', + classid : "clsid:" + o.classid, + style : dom.getAttrib(n, 'style'), + codebase : o.codebase, + width : o.width, + height : o.height + }); + } + + each (p, function(v, k) { + if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) { + // Use url instead of src in IE for Windows media + if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url) + k = 'url'; + + if (v) + dom.add(ob, 'span', {_mce_name : 'param', name : k, '_mce_value' : v}); + } + }); + + if (!stc) + dom.add(ob, 'span', tinymce.extend({_mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p)); + + return ob; + }, + + _spansToImgs : function(p) { + var t = this, dom = t.editor.dom, im, ci; + + each(dom.select('span', p), function(n) { + // Convert object into image + if (dom.getAttrib(n, 'class') == 'mceItemObject') { + ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, ''); + + switch (ci) { + case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000': + dom.replace(t._createImg('mceItemFlash', n), n); + break; + + case 'clsid:166b1bca-3f9c-11cf-8075-444553540000': + dom.replace(t._createImg('mceItemShockWave', n), n); + break; + + case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6': + case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95': + case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a': + dom.replace(t._createImg('mceItemWindowsMedia', n), n); + break; + + case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b': + dom.replace(t._createImg('mceItemQuickTime', n), n); + break; + + case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa': + dom.replace(t._createImg('mceItemRealMedia', n), n); + break; + + default: + dom.replace(t._createImg('mceItemFlash', n), n); + } + + return; + } + + // Convert embed into image + if (dom.getAttrib(n, 'class') == 'mceItemEmbed') { + switch (dom.getAttrib(n, 'type')) { + case 'application/x-shockwave-flash': + dom.replace(t._createImg('mceItemFlash', n), n); + break; + + case 'application/x-director': + dom.replace(t._createImg('mceItemShockWave', n), n); + break; + + case 'application/x-mplayer2': + dom.replace(t._createImg('mceItemWindowsMedia', n), n); + break; + + case 'video/quicktime': + dom.replace(t._createImg('mceItemQuickTime', n), n); + break; + + case 'audio/x-pn-realaudio-plugin': + dom.replace(t._createImg('mceItemRealMedia', n), n); + break; + + default: + dom.replace(t._createImg('mceItemFlash', n), n); + } + } + }); + }, + + _createImg : function(cl, n) { + var im, dom = this.editor.dom, pa = {}, ti = '', args; + + args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data']; + + // Create image + im = dom.create('img', { + src : this.url + '/img/trans.gif', + width : dom.getAttrib(n, 'width') || 100, + height : dom.getAttrib(n, 'height') || 100, + style : dom.getAttrib(n, 'style'), + 'class' : cl + }); + + // Setup base parameters + each(args, function(na) { + var v = dom.getAttrib(n, na); + + if (v) + pa[na] = v; + }); + + // Add optional parameters + each(dom.select('span', n), function(n) { + if (dom.hasClass(n, 'mceItemParam')) + pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value'); + }); + + // Use src not movie + if (pa.movie) { + pa.src = pa.movie; + delete pa.movie; + } + + // No src try data + if (!pa.src) { + pa.src = pa.data; + delete pa.data; + } + + // Merge with embed args + n = dom.select('.mceItemEmbed', n)[0]; + if (n) { + each(args, function(na) { + var v = dom.getAttrib(n, na); + + if (v && !pa[na]) + pa[na] = v; + }); + } + + delete pa.width; + delete pa.height; + + im.title = this._serialize(pa); + + return im; + }, + + _parse : function(s) { + return tinymce.util.JSON.parse('{' + s + '}'); + }, + + _serialize : function(o) { + return tinymce.util.JSON.serialize(o).replace(/[{}]/g, ''); + } + }); + + // Register plugin + tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/flash.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/flash.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/flv_player.swf b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/flv_player.swf old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/quicktime.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/quicktime.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/realmedia.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/realmedia.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/shockwave.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/shockwave.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/trans.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/trans.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/media/js/embed.js b/src/lab/final-build/jscripts/tiny_mce/plugins/media/js/embed.js old mode 100755 new mode 100644 index f8dc8105..6fe25de0 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/media/js/embed.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/media/js/embed.js @@ -1,73 +1,73 @@ -/** - * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. - */ - -function writeFlash(p) { - writeEmbed( - 'D27CDB6E-AE6D-11cf-96B8-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'application/x-shockwave-flash', - p - ); -} - -function writeShockWave(p) { - writeEmbed( - '166B1BCA-3F9C-11CF-8075-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', - 'application/x-director', - p - ); -} - -function writeQuickTime(p) { - writeEmbed( - '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', - 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', - 'video/quicktime', - p - ); -} - -function writeRealMedia(p) { - writeEmbed( - 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'audio/x-pn-realaudio-plugin', - p - ); -} - -function writeWindowsMedia(p) { - p.url = p.src; - writeEmbed( - '6BF52A52-394A-11D3-B153-00C04F79FAA6', - 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', - 'application/x-mplayer2', - p - ); -} - -function writeEmbed(cls, cb, mt, p) { - var h = '', n; - - h += ''; - - h += ''; + + h += ''); - -function init() { - var pl = "", f, val; - var type = "flash", fe, i; - - ed = tinyMCEPopup.editor; - - tinyMCEPopup.resizeToInnerSize(); - f = document.forms[0] - - fe = ed.selection.getNode(); - if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { - pl = fe.title; - - switch (ed.dom.getAttrib(fe, 'class')) { - case 'mceItemFlash': - type = 'flash'; - break; - - case 'mceItemFlashVideo': - type = 'flv'; - break; - - case 'mceItemShockWave': - type = 'shockwave'; - break; - - case 'mceItemWindowsMedia': - type = 'wmp'; - break; - - case 'mceItemQuickTime': - type = 'qt'; - break; - - case 'mceItemRealMedia': - type = 'rmp'; - break; - } - - document.forms[0].insert.value = ed.getLang('update', 'Insert', true); - } - - document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); - document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var html = getMediaListHTML('medialist','src','media','media'); - if (html == "") - document.getElementById("linklistrow").style.display = 'none'; - else - document.getElementById("linklistcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('filebrowser')) - document.getElementById('src').style.width = '230px'; - - // Setup form - if (pl != "") { - pl = tinyMCEPopup.editor.plugins.media._parse(pl); - - switch (type) { - case "flash": - setBool(pl, 'flash', 'play'); - setBool(pl, 'flash', 'loop'); - setBool(pl, 'flash', 'menu'); - setBool(pl, 'flash', 'swliveconnect'); - setStr(pl, 'flash', 'quality'); - setStr(pl, 'flash', 'scale'); - setStr(pl, 'flash', 'salign'); - setStr(pl, 'flash', 'wmode'); - setStr(pl, 'flash', 'base'); - setStr(pl, 'flash', 'flashvars'); - break; - - case "qt": - setBool(pl, 'qt', 'loop'); - setBool(pl, 'qt', 'autoplay'); - setBool(pl, 'qt', 'cache'); - setBool(pl, 'qt', 'controller'); - setBool(pl, 'qt', 'correction'); - setBool(pl, 'qt', 'enablejavascript'); - setBool(pl, 'qt', 'kioskmode'); - setBool(pl, 'qt', 'autohref'); - setBool(pl, 'qt', 'playeveryframe'); - setBool(pl, 'qt', 'tarsetcache'); - setStr(pl, 'qt', 'scale'); - setStr(pl, 'qt', 'starttime'); - setStr(pl, 'qt', 'endtime'); - setStr(pl, 'qt', 'tarset'); - setStr(pl, 'qt', 'qtsrcchokespeed'); - setStr(pl, 'qt', 'volume'); - setStr(pl, 'qt', 'qtsrc'); - break; - - case "shockwave": - setBool(pl, 'shockwave', 'sound'); - setBool(pl, 'shockwave', 'progress'); - setBool(pl, 'shockwave', 'autostart'); - setBool(pl, 'shockwave', 'swliveconnect'); - setStr(pl, 'shockwave', 'swvolume'); - setStr(pl, 'shockwave', 'swstretchstyle'); - setStr(pl, 'shockwave', 'swstretchhalign'); - setStr(pl, 'shockwave', 'swstretchvalign'); - break; - - case "wmp": - setBool(pl, 'wmp', 'autostart'); - setBool(pl, 'wmp', 'enabled'); - setBool(pl, 'wmp', 'enablecontextmenu'); - setBool(pl, 'wmp', 'fullscreen'); - setBool(pl, 'wmp', 'invokeurls'); - setBool(pl, 'wmp', 'mute'); - setBool(pl, 'wmp', 'stretchtofit'); - setBool(pl, 'wmp', 'windowlessvideo'); - setStr(pl, 'wmp', 'balance'); - setStr(pl, 'wmp', 'baseurl'); - setStr(pl, 'wmp', 'captioningid'); - setStr(pl, 'wmp', 'currentmarker'); - setStr(pl, 'wmp', 'currentposition'); - setStr(pl, 'wmp', 'defaultframe'); - setStr(pl, 'wmp', 'playcount'); - setStr(pl, 'wmp', 'rate'); - setStr(pl, 'wmp', 'uimode'); - setStr(pl, 'wmp', 'volume'); - break; - - case "rmp": - setBool(pl, 'rmp', 'autostart'); - setBool(pl, 'rmp', 'loop'); - setBool(pl, 'rmp', 'autogotourl'); - setBool(pl, 'rmp', 'center'); - setBool(pl, 'rmp', 'imagestatus'); - setBool(pl, 'rmp', 'maintainaspect'); - setBool(pl, 'rmp', 'nojava'); - setBool(pl, 'rmp', 'prefetch'); - setBool(pl, 'rmp', 'shuffle'); - setStr(pl, 'rmp', 'console'); - setStr(pl, 'rmp', 'controls'); - setStr(pl, 'rmp', 'numloop'); - setStr(pl, 'rmp', 'scriptcallbacks'); - break; - } - - setStr(pl, null, 'src'); - setStr(pl, null, 'id'); - setStr(pl, null, 'name'); - setStr(pl, null, 'vspace'); - setStr(pl, null, 'hspace'); - setStr(pl, null, 'bgcolor'); - setStr(pl, null, 'align'); - setStr(pl, null, 'width'); - setStr(pl, null, 'height'); - - if ((val = ed.dom.getAttrib(fe, "width")) != "") - pl.width = f.width.value = val; - - if ((val = ed.dom.getAttrib(fe, "height")) != "") - pl.height = f.height.value = val; - - oldWidth = pl.width ? parseInt(pl.width) : 0; - oldHeight = pl.height ? parseInt(pl.height) : 0; - } else - oldWidth = oldHeight = 0; - - selectByValue(f, 'media_type', type); - changedType(type); - updateColor('bgcolor_pick', 'bgcolor'); - - TinyMCE_EditableSelects.init(); - generatePreview(); -} - -function insertMedia() { - var fe, f = document.forms[0], h; - - tinyMCEPopup.restoreSelection(); - - if (!AutoValidator.validate(f)) { - tinyMCEPopup.alert(ed.getLang('invalid_data')); - return false; - } - - f.width.value = f.width.value == "" ? 100 : f.width.value; - f.height.value = f.height.value == "" ? 100 : f.height.value; - - fe = ed.selection.getNode(); - if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - fe.className = "mceItemFlash"; - break; - - case "flv": - fe.className = "mceItemFlashVideo"; - break; - - case "shockwave": - fe.className = "mceItemShockWave"; - break; - - case "qt": - fe.className = "mceItemQuickTime"; - break; - - case "wmp": - fe.className = "mceItemWindowsMedia"; - break; - - case "rmp": - fe.className = "mceItemRealMedia"; - break; - } - - if (fe.width != f.width.value || fe.height != f.height.value) - ed.execCommand('mceRepaint'); - - fe.title = serializeParameters(); - fe.width = f.width.value; - fe.height = f.height.value; - fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); - fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); - fe.align = f.align.options[f.align.selectedIndex].value; - } else { - h = ' 0) { - var html = ""; - - html += ''; - - return html; - } - - return ""; -} - -function getType(v) { - var fo, i, c, el, x, f = document.forms[0]; - - fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'); - - // YouTube - if (v.match(/watch\?v=(.+)(.*)/)) { - f.width.value = '425'; - f.height.value = '350'; - f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1]; - return 'flash'; - } - - // Google video - if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) { - f.width.value = '425'; - f.height.value = '326'; - f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en'; - return 'flash'; - } - - for (i=0; i 0 ? s.substring(0, s.length - 1) : s; - - return s; -} - -function setBool(pl, p, n) { - if (typeof(pl[n]) == "undefined") - return; - - document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false'; -} - -function setStr(pl, p, n) { - var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; - - if (typeof(pl[n]) == "undefined") - return; - - if (e.type == "text") - e.value = pl[n]; - else - selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); -} - -function getBool(p, n, d, tv, fv) { - var v = document.forms[0].elements[p + "_" + n].checked; - - tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; - fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; - - return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',"); -} - -function getStr(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; - - if (n == 'src') - v = tinyMCEPopup.editor.convertURL(v, 'src', null); - - return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); -} - -function getInt(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; - - return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); -} - -function jsEncode(s) { - s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); - s = s.replace(new RegExp('"', 'g'), '\\"'); - s = s.replace(new RegExp("'", 'g'), "\\'"); - - return s; -} - -function generatePreview(c) { - var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; - - p.innerHTML = ''; - - nw = parseInt(f.width.value); - nh = parseInt(f.height.value); - - if (f.width.value != "" && f.height.value != "") { - if (f.constrain.checked) { - if (c == 'width' && oldWidth != 0) { - wp = nw / oldWidth; - nh = Math.round(wp * nh); - f.height.value = nh; - } else if (c == 'height' && oldHeight != 0) { - hp = nh / oldHeight; - nw = Math.round(hp * nw); - f.width.value = nw; - } - } - } - - if (f.width.value != "") - oldWidth = nw; - - if (f.height.value != "") - oldHeight = nh; - - // After constrain - pl = serializeParameters(); - - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - type = 'application/x-shockwave-flash'; - break; - - case "shockwave": - cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; - type = 'application/x-director'; - break; - - case "qt": - cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; - codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; - type = 'video/quicktime'; - break; - - case "wmp": - cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'application/x-mplayer2'; - break; - - case "rmp": - cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'audio/x-pn-realaudio-plugin'; - break; - } - - if (pl == '') { - p.innerHTML = ''; - return; - } - - pl = tinyMCEPopup.editor.plugins.media._parse(pl); - - if (!pl.src) { - p.innerHTML = ''; - return; - } - - pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src); - pl.width = !pl.width ? 100 : pl.width; - pl.height = !pl.height ? 100 : pl.height; - pl.id = !pl.id ? 'obj' : pl.id; - pl.name = !pl.name ? 'eobj' : pl.name; - pl.align = !pl.align ? '' : pl.align; - - // Avoid annoying warning about insecure items - if (!tinymce.isIE || document.location.protocol != 'https:') { - h += ''; - - for (n in pl) { - h += ''; - - // Add extra url parameter if it's an absolute URL - if (n == 'src' && pl[n].indexOf('://') != -1) - h += ''; - } - } - - h += ''); + +function init() { + var pl = "", f, val; + var type = "flash", fe, i; + + ed = tinyMCEPopup.editor; + + tinyMCEPopup.resizeToInnerSize(); + f = document.forms[0] + + fe = ed.selection.getNode(); + if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { + pl = fe.title; + + switch (ed.dom.getAttrib(fe, 'class')) { + case 'mceItemFlash': + type = 'flash'; + break; + + case 'mceItemFlashVideo': + type = 'flv'; + break; + + case 'mceItemShockWave': + type = 'shockwave'; + break; + + case 'mceItemWindowsMedia': + type = 'wmp'; + break; + + case 'mceItemQuickTime': + type = 'qt'; + break; + + case 'mceItemRealMedia': + type = 'rmp'; + break; + } + + document.forms[0].insert.value = ed.getLang('update', 'Insert', true); + } + + document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); + document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var html = getMediaListHTML('medialist','src','media','media'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('filebrowser')) + document.getElementById('src').style.width = '230px'; + + // Setup form + if (pl != "") { + pl = tinyMCEPopup.editor.plugins.media._parse(pl); + + switch (type) { + case "flash": + setBool(pl, 'flash', 'play'); + setBool(pl, 'flash', 'loop'); + setBool(pl, 'flash', 'menu'); + setBool(pl, 'flash', 'swliveconnect'); + setStr(pl, 'flash', 'quality'); + setStr(pl, 'flash', 'scale'); + setStr(pl, 'flash', 'salign'); + setStr(pl, 'flash', 'wmode'); + setStr(pl, 'flash', 'base'); + setStr(pl, 'flash', 'flashvars'); + break; + + case "qt": + setBool(pl, 'qt', 'loop'); + setBool(pl, 'qt', 'autoplay'); + setBool(pl, 'qt', 'cache'); + setBool(pl, 'qt', 'controller'); + setBool(pl, 'qt', 'correction'); + setBool(pl, 'qt', 'enablejavascript'); + setBool(pl, 'qt', 'kioskmode'); + setBool(pl, 'qt', 'autohref'); + setBool(pl, 'qt', 'playeveryframe'); + setBool(pl, 'qt', 'tarsetcache'); + setStr(pl, 'qt', 'scale'); + setStr(pl, 'qt', 'starttime'); + setStr(pl, 'qt', 'endtime'); + setStr(pl, 'qt', 'tarset'); + setStr(pl, 'qt', 'qtsrcchokespeed'); + setStr(pl, 'qt', 'volume'); + setStr(pl, 'qt', 'qtsrc'); + break; + + case "shockwave": + setBool(pl, 'shockwave', 'sound'); + setBool(pl, 'shockwave', 'progress'); + setBool(pl, 'shockwave', 'autostart'); + setBool(pl, 'shockwave', 'swliveconnect'); + setStr(pl, 'shockwave', 'swvolume'); + setStr(pl, 'shockwave', 'swstretchstyle'); + setStr(pl, 'shockwave', 'swstretchhalign'); + setStr(pl, 'shockwave', 'swstretchvalign'); + break; + + case "wmp": + setBool(pl, 'wmp', 'autostart'); + setBool(pl, 'wmp', 'enabled'); + setBool(pl, 'wmp', 'enablecontextmenu'); + setBool(pl, 'wmp', 'fullscreen'); + setBool(pl, 'wmp', 'invokeurls'); + setBool(pl, 'wmp', 'mute'); + setBool(pl, 'wmp', 'stretchtofit'); + setBool(pl, 'wmp', 'windowlessvideo'); + setStr(pl, 'wmp', 'balance'); + setStr(pl, 'wmp', 'baseurl'); + setStr(pl, 'wmp', 'captioningid'); + setStr(pl, 'wmp', 'currentmarker'); + setStr(pl, 'wmp', 'currentposition'); + setStr(pl, 'wmp', 'defaultframe'); + setStr(pl, 'wmp', 'playcount'); + setStr(pl, 'wmp', 'rate'); + setStr(pl, 'wmp', 'uimode'); + setStr(pl, 'wmp', 'volume'); + break; + + case "rmp": + setBool(pl, 'rmp', 'autostart'); + setBool(pl, 'rmp', 'loop'); + setBool(pl, 'rmp', 'autogotourl'); + setBool(pl, 'rmp', 'center'); + setBool(pl, 'rmp', 'imagestatus'); + setBool(pl, 'rmp', 'maintainaspect'); + setBool(pl, 'rmp', 'nojava'); + setBool(pl, 'rmp', 'prefetch'); + setBool(pl, 'rmp', 'shuffle'); + setStr(pl, 'rmp', 'console'); + setStr(pl, 'rmp', 'controls'); + setStr(pl, 'rmp', 'numloop'); + setStr(pl, 'rmp', 'scriptcallbacks'); + break; + } + + setStr(pl, null, 'src'); + setStr(pl, null, 'id'); + setStr(pl, null, 'name'); + setStr(pl, null, 'vspace'); + setStr(pl, null, 'hspace'); + setStr(pl, null, 'bgcolor'); + setStr(pl, null, 'align'); + setStr(pl, null, 'width'); + setStr(pl, null, 'height'); + + if ((val = ed.dom.getAttrib(fe, "width")) != "") + pl.width = f.width.value = val; + + if ((val = ed.dom.getAttrib(fe, "height")) != "") + pl.height = f.height.value = val; + + oldWidth = pl.width ? parseInt(pl.width) : 0; + oldHeight = pl.height ? parseInt(pl.height) : 0; + } else + oldWidth = oldHeight = 0; + + selectByValue(f, 'media_type', type); + changedType(type); + updateColor('bgcolor_pick', 'bgcolor'); + + TinyMCE_EditableSelects.init(); + generatePreview(); +} + +function insertMedia() { + var fe, f = document.forms[0], h; + + tinyMCEPopup.restoreSelection(); + + if (!AutoValidator.validate(f)) { + tinyMCEPopup.alert(ed.getLang('invalid_data')); + return false; + } + + f.width.value = f.width.value == "" ? 100 : f.width.value; + f.height.value = f.height.value == "" ? 100 : f.height.value; + + fe = ed.selection.getNode(); + if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + fe.className = "mceItemFlash"; + break; + + case "flv": + fe.className = "mceItemFlashVideo"; + break; + + case "shockwave": + fe.className = "mceItemShockWave"; + break; + + case "qt": + fe.className = "mceItemQuickTime"; + break; + + case "wmp": + fe.className = "mceItemWindowsMedia"; + break; + + case "rmp": + fe.className = "mceItemRealMedia"; + break; + } + + if (fe.width != f.width.value || fe.height != f.height.value) + ed.execCommand('mceRepaint'); + + fe.title = serializeParameters(); + fe.width = f.width.value; + fe.height = f.height.value; + fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); + fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); + fe.align = f.align.options[f.align.selectedIndex].value; + } else { + h = ' 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function getType(v) { + var fo, i, c, el, x, f = document.forms[0]; + + fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'); + + // YouTube + if (v.match(/watch\?v=(.+)(.*)/)) { + f.width.value = '425'; + f.height.value = '350'; + f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1]; + return 'flash'; + } + + // Google video + if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) { + f.width.value = '425'; + f.height.value = '326'; + f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en'; + return 'flash'; + } + + for (i=0; i 0 ? s.substring(0, s.length - 1) : s; + + return s; +} + +function setBool(pl, p, n) { + if (typeof(pl[n]) == "undefined") + return; + + document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false'; +} + +function setStr(pl, p, n) { + var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; + + if (typeof(pl[n]) == "undefined") + return; + + if (e.type == "text") + e.value = pl[n]; + else + selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); +} + +function getBool(p, n, d, tv, fv) { + var v = document.forms[0].elements[p + "_" + n].checked; + + tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; + fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; + + return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',"); +} + +function getStr(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + if (n == 'src') + v = tinyMCEPopup.editor.convertURL(v, 'src', null); + + return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); +} + +function getInt(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); +} + +function jsEncode(s) { + s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); + s = s.replace(new RegExp('"', 'g'), '\\"'); + s = s.replace(new RegExp("'", 'g'), "\\'"); + + return s; +} + +function generatePreview(c) { + var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; + + p.innerHTML = ''; + + nw = parseInt(f.width.value); + nh = parseInt(f.height.value); + + if (f.width.value != "" && f.height.value != "") { + if (f.constrain.checked) { + if (c == 'width' && oldWidth != 0) { + wp = nw / oldWidth; + nh = Math.round(wp * nh); + f.height.value = nh; + } else if (c == 'height' && oldHeight != 0) { + hp = nh / oldHeight; + nw = Math.round(hp * nw); + f.width.value = nw; + } + } + } + + if (f.width.value != "") + oldWidth = nw; + + if (f.height.value != "") + oldHeight = nh; + + // After constrain + pl = serializeParameters(); + + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + type = 'application/x-shockwave-flash'; + break; + + case "shockwave": + cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + type = 'application/x-director'; + break; + + case "qt": + cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; + codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + type = 'video/quicktime'; + break; + + case "wmp": + cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'application/x-mplayer2'; + break; + + case "rmp": + cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'audio/x-pn-realaudio-plugin'; + break; + } + + if (pl == '') { + p.innerHTML = ''; + return; + } + + pl = tinyMCEPopup.editor.plugins.media._parse(pl); + + if (!pl.src) { + p.innerHTML = ''; + return; + } + + pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src); + pl.width = !pl.width ? 100 : pl.width; + pl.height = !pl.height ? 100 : pl.height; + pl.id = !pl.id ? 'obj' : pl.id; + pl.name = !pl.name ? 'eobj' : pl.name; + pl.align = !pl.align ? '' : pl.align; + + // Avoid annoying warning about insecure items + if (!tinymce.isIE || document.location.protocol != 'https:') { + h += ''; + + for (n in pl) { + h += ''; + + // Add extra url parameter if it's an absolute URL + if (n == 'src' && pl[n].indexOf('://') != -1) + h += ''; + } + } + + h += ' - - - {#media_dlg.title} - - - - - - - - - -
    - - -
    -
    -
    - {#media_dlg.general} - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - -
     
    -
    - - - - - - -
    x   
    -
    -
    - -
    - {#media_dlg.preview} - -
    -
    - -
    -
    - {#media_dlg.advanced} - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - -
     
    -
    -
    - -
    - {#media_dlg.flash_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - - - - - - - -
    -
    - -
    - {#media_dlg.flv_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -
    - -
    - {#media_dlg.qt_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -  
    - - - - - -
     
    -
    -
    - -
    - {#media_dlg.wmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -
    - -
    - {#media_dlg.rmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -   -
    -
    - -
    - {#media_dlg.shockwave_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -
    -
    -
    - -
    - - -
    -
    - - + + + + {#media_dlg.title} + + + + + + + + + +
    + + +
    +
    +
    + {#media_dlg.general} + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +
     
    +
    + + + + + + +
    x   
    +
    +
    + +
    + {#media_dlg.preview} + +
    +
    + +
    +
    + {#media_dlg.advanced} + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + +
     
    +
    +
    + +
    + {#media_dlg.flash_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + + + + + + + +
    +
    + +
    + {#media_dlg.flv_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + +
    + {#media_dlg.qt_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +  
    + + + + + +
     
    +
    +
    + +
    + {#media_dlg.wmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    + +
    + {#media_dlg.rmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +   +
    +
    + +
    + {#media_dlg.shockwave_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js old mode 100755 new mode 100644 index e3b078bf..a9e68af3 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js @@ -1,53 +1,53 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.Nonbreaking', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceNonBreaking', function() { - ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '·' : ' '); - }); - - // Register buttons - ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'}); - - if (ed.getParam('nonbreaking_force_tab')) { - ed.onKeyDown.add(function(ed, e) { - if (tinymce.isIE && e.keyCode == 9) { - ed.execCommand('mceNonBreaking'); - ed.execCommand('mceNonBreaking'); - ed.execCommand('mceNonBreaking'); - tinymce.dom.Event.cancel(e); - } - }); - } - }, - - getInfo : function() { - return { - longname : 'Nonbreaking space', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - - // Private methods - }); - - // Register plugin - tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Nonbreaking', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceNonBreaking', function() { + ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '·' : ' '); + }); + + // Register buttons + ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'}); + + if (ed.getParam('nonbreaking_force_tab')) { + ed.onKeyDown.add(function(ed, e) { + if (tinymce.isIE && e.keyCode == 9) { + ed.execCommand('mceNonBreaking'); + ed.execCommand('mceNonBreaking'); + ed.execCommand('mceNonBreaking'); + tinymce.dom.Event.cancel(e); + } + }); + } + }, + + getInfo : function() { + return { + longname : 'Nonbreaking space', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + + // Private methods + }); + + // Register plugin + tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js old mode 100755 new mode 100644 index 656c971b..54a7b36b --- a/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js @@ -1,90 +1,90 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var Event = tinymce.dom.Event; - - tinymce.create('tinymce.plugins.NonEditablePlugin', { - init : function(ed, url) { - var t = this, editClass, nonEditClass; - - t.editor = ed; - editClass = ed.getParam("noneditable_editable_class", "mceEditable"); - nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); - - ed.onNodeChange.addToTop(function(ed, cm, n) { - var sc, ec; - - // Block if start or end is inside a non editable element - sc = ed.dom.getParent(ed.selection.getStart(), function(n) { - return ed.dom.hasClass(n, nonEditClass); - }); - - ec = ed.dom.getParent(ed.selection.getEnd(), function(n) { - return ed.dom.hasClass(n, nonEditClass); - }); - - // Block or unblock - if (sc || ec) { - t._setDisabled(1); - return false; - } else - t._setDisabled(0); - }); - }, - - getInfo : function() { - return { - longname : 'Non editable elements', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - _block : function(ed, e) { - var k = e.keyCode; - - // Don't block arrow keys, pg up/down, and F1-F12 - if ((k > 32 && k < 41) || (k > 111 && k < 124)) - return; - - return Event.cancel(e); - }, - - _setDisabled : function(s) { - var t = this, ed = t.editor; - - tinymce.each(ed.controlManager.controls, function(c) { - c.setDisabled(s); - }); - - if (s !== t.disabled) { - if (s) { - ed.onKeyDown.addToTop(t._block); - ed.onKeyPress.addToTop(t._block); - ed.onKeyUp.addToTop(t._block); - ed.onPaste.addToTop(t._block); - } else { - ed.onKeyDown.remove(t._block); - ed.onKeyPress.remove(t._block); - ed.onKeyUp.remove(t._block); - ed.onPaste.remove(t._block); - } - - t.disabled = s; - } - } - }); - - // Register plugin - tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var Event = tinymce.dom.Event; + + tinymce.create('tinymce.plugins.NonEditablePlugin', { + init : function(ed, url) { + var t = this, editClass, nonEditClass; + + t.editor = ed; + editClass = ed.getParam("noneditable_editable_class", "mceEditable"); + nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); + + ed.onNodeChange.addToTop(function(ed, cm, n) { + var sc, ec; + + // Block if start or end is inside a non editable element + sc = ed.dom.getParent(ed.selection.getStart(), function(n) { + return ed.dom.hasClass(n, nonEditClass); + }); + + ec = ed.dom.getParent(ed.selection.getEnd(), function(n) { + return ed.dom.hasClass(n, nonEditClass); + }); + + // Block or unblock + if (sc || ec) { + t._setDisabled(1); + return false; + } else + t._setDisabled(0); + }); + }, + + getInfo : function() { + return { + longname : 'Non editable elements', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _block : function(ed, e) { + var k = e.keyCode; + + // Don't block arrow keys, pg up/down, and F1-F12 + if ((k > 32 && k < 41) || (k > 111 && k < 124)) + return; + + return Event.cancel(e); + }, + + _setDisabled : function(s) { + var t = this, ed = t.editor; + + tinymce.each(ed.controlManager.controls, function(c) { + c.setDisabled(s); + }); + + if (s !== t.disabled) { + if (s) { + ed.onKeyDown.addToTop(t._block); + ed.onKeyPress.addToTop(t._block); + ed.onKeyUp.addToTop(t._block); + ed.onPaste.addToTop(t._block); + } else { + ed.onKeyDown.remove(t._block); + ed.onKeyPress.remove(t._block); + ed.onKeyUp.remove(t._block); + ed.onPaste.remove(t._block); + } + + t.disabled = s; + } + } + }); + + // Register plugin + tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/css/content.css b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/css/content.css old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js old mode 100755 new mode 100644 index 4e1eb0a7..905a7433 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js @@ -1,77 +1,77 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.PageBreakPlugin', { - init : function(ed, url) { - var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; - - pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); - - // Register commands - ed.addCommand('mcePageBreak', function() { - ed.execCommand('mceInsertContent', 0, pb); - }); - - // Register buttons - ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); - - ed.onInit.add(function() { - if (ed.settings.content_css !== false) - ed.dom.loadCSS(url + "/css/content.css"); - - if (ed.theme.onResolveName) { - ed.theme.onResolveName.add(function(th, o) { - if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) - o.name = 'pagebreak'; - }); - } - }); - - ed.onClick.add(function(ed, e) { - e = e.target; - - if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls)) - ed.selection.select(e); - }); - - ed.onNodeChange.add(function(ed, cm, n) { - cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls)); - }); - - ed.onBeforeSetContent.add(function(ed, o) { - o.content = o.content.replace(pbRE, pb); - }); - - ed.onPostProcess.add(function(ed, o) { - if (o.get) - o.content = o.content.replace(/]+>/g, function(im) { - if (im.indexOf('class="mcePageBreak') !== -1) - im = sep; - - return im; - }); - }); - }, - - getInfo : function() { - return { - longname : 'PageBreak', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.PageBreakPlugin', { + init : function(ed, url) { + var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; + + pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); + + // Register commands + ed.addCommand('mcePageBreak', function() { + ed.execCommand('mceInsertContent', 0, pb); + }); + + // Register buttons + ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); + + ed.onInit.add(function() { + if (ed.settings.content_css !== false) + ed.dom.loadCSS(url + "/css/content.css"); + + if (ed.theme.onResolveName) { + ed.theme.onResolveName.add(function(th, o) { + if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) + o.name = 'pagebreak'; + }); + } + }); + + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls)) + ed.selection.select(e); + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls)); + }); + + ed.onBeforeSetContent.add(function(ed, o) { + o.content = o.content.replace(pbRE, pb); + }); + + ed.onPostProcess.add(function(ed, o) { + if (o.get) + o.content = o.content.replace(/]+>/g, function(im) { + if (im.indexOf('class="mcePageBreak') !== -1) + im = sep; + + return im; + }); + }); + }, + + getInfo : function() { + return { + longname : 'PageBreak', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js old mode 100755 new mode 100644 index 40d4c293..f7e977e7 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js @@ -1,929 +1,929 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var each = tinymce.each, - entities = null, - defs = { - paste_auto_cleanup_on_paste : true, - paste_block_drop : false, - paste_retain_style_properties : "none", - paste_strip_class_attributes : "mso", - paste_remove_spans : false, - paste_remove_styles : false, - paste_remove_styles_if_webkit : true, - paste_convert_middot_lists : true, - paste_convert_headers_to_strong : false, - paste_dialog_width : "450", - paste_dialog_height : "400", - paste_text_use_dialog : false, - paste_text_sticky : false, - paste_text_notifyalways : false, - paste_text_linebreaktype : "p", - paste_text_replacements : [ - [/\u2026/g, "..."], - [/[\x93\x94\u201c\u201d]/g, '"'], - [/[\x60\x91\x92\u2018\u2019]/g, "'"] - ] - }; - - function getParam(ed, name) { - return ed.getParam(name, defs[name]); - } - - tinymce.create('tinymce.plugins.PastePlugin', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - t.url = url; - - // Setup plugin events - t.onPreProcess = new tinymce.util.Dispatcher(t); - t.onPostProcess = new tinymce.util.Dispatcher(t); - - // Register default handlers - t.onPreProcess.add(t._preProcess); - t.onPostProcess.add(t._postProcess); - - // Register optional preprocess handler - t.onPreProcess.add(function(pl, o) { - ed.execCallback('paste_preprocess', pl, o); - }); - - // Register optional postprocess - t.onPostProcess.add(function(pl, o) { - ed.execCallback('paste_postprocess', pl, o); - }); - - // Initialize plain text flag - ed.pasteAsPlainText = false; - - // This function executes the process handlers and inserts the contents - // force_rich overrides plain text mode set by user, important for pasting with execCommand - function process(o, force_rich) { - var dom = ed.dom; - - // Execute pre process handlers - t.onPreProcess.dispatch(t, o); - - // Create DOM structure - o.node = dom.create('div', 0, o.content); - - // Execute post process handlers - t.onPostProcess.dispatch(t, o); - - // Serialize content - o.content = ed.serializer.serialize(o.node, {getInner : 1}); - - // Plain text option active? - if ((!force_rich) && (ed.pasteAsPlainText)) { - t._insertPlainText(ed, dom, o.content); - - if (!getParam(ed, "paste_text_sticky")) { - ed.pasteAsPlainText = false; - ed.controlManager.setActive("pastetext", false); - } - } else if (/<(p|h[1-6]|ul|ol)/.test(o.content)) { - // Handle insertion of contents containing block elements separately - t._insertBlockContent(ed, dom, o.content); - } else { - t._insert(o.content); - } - } - - // Add command for external usage - ed.addCommand('mceInsertClipboardContent', function(u, o) { - process(o, true); - }); - - if (!getParam(ed, "paste_text_use_dialog")) { - ed.addCommand('mcePasteText', function(u, v) { - var cookie = tinymce.util.Cookie; - - ed.pasteAsPlainText = !ed.pasteAsPlainText; - ed.controlManager.setActive('pastetext', ed.pasteAsPlainText); - - if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) { - if (getParam(ed, "paste_text_sticky")) { - ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); - } else { - ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); - } - - if (!getParam(ed, "paste_text_notifyalways")) { - cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31)) - } - } - }); - } - - ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'}); - ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'}); - - // This function grabs the contents from the clipboard by adding a - // hidden div and placing the caret inside it and after the browser paste - // is done it grabs that contents and processes that - function grabContent(e) { - var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY; - - if (dom.get('_mcePaste')) - return; - - // Create container to paste into - n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF'); - - // If contentEditable mode we need to find out the position of the closest element - if (body != ed.getDoc().body) - posY = dom.getPos(ed.selection.getStart(), body).y; - else - posY = body.scrollTop; - - // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles - dom.setStyles(n, { - position : 'absolute', - left : -10000, - top : posY, - width : 1, - height : 1, - overflow : 'hidden' - }); - - if (tinymce.isIE) { - // Select the container - rng = dom.doc.body.createTextRange(); - rng.moveToElementText(n); - rng.execCommand('Paste'); - - // Remove container - dom.remove(n); - - // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due - // to IE security settings so we pass the junk though better than nothing right - if (n.innerHTML === '\uFEFF') { - ed.execCommand('mcePasteWord'); - e.preventDefault(); - return; - } - - // Process contents - process({content : n.innerHTML}); - - // Block the real paste event - return tinymce.dom.Event.cancel(e); - } else { - function block(e) { - e.preventDefault(); - }; - - // Block mousedown and click to prevent selection change - dom.bind(ed.getDoc(), 'mousedown', block); - dom.bind(ed.getDoc(), 'keydown', block); - - or = ed.selection.getRng(); - - // Move caret into hidden div - n = n.firstChild; - rng = ed.getDoc().createRange(); - rng.setStart(n, 0); - rng.setEnd(n, 1); - sel.setRng(rng); - - // Wait a while and grab the pasted contents - window.setTimeout(function() { - var h = '', nl = dom.select('div.mcePaste'); - - // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string - each(nl, function(n) { - // WebKit duplicates the divs so we need to remove them - each(dom.select('div.mcePaste', n), function(n) { - dom.remove(n, 1); - }); - - // Contents in WebKit is sometimes wrapped in a apple style span so we need to grab it from that one - h += (dom.select('> span.Apple-style-span div', n)[0] || dom.select('> span.Apple-style-span', n)[0] || n).innerHTML; - }); - - // Remove the nodes - each(nl, function(n) { - dom.remove(n); - }); - - // Restore the old selection - if (or) - sel.setRng(or); - - process({content : h}); - - // Unblock events ones we got the contents - dom.unbind(ed.getDoc(), 'mousedown', block); - dom.unbind(ed.getDoc(), 'keydown', block); - }, 0); - } - } - - // Check if we should use the new auto process method - if (getParam(ed, "paste_auto_cleanup_on_paste")) { - // Is it's Opera or older FF use key handler - if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) { - ed.onKeyDown.add(function(ed, e) { - if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) - grabContent(e); - }); - } else { - // Grab contents on paste event on Gecko and WebKit - ed.onPaste.addToTop(function(ed, e) { - return grabContent(e); - }); - } - } - - // Block all drag/drop events - if (getParam(ed, "paste_block_drop")) { - ed.onInit.add(function() { - ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) { - e.preventDefault(); - e.stopPropagation(); - - return false; - }); - }); - } - - // Add legacy support - t._legacySupport(); - }, - - getInfo : function() { - return { - longname : 'Paste text/word', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - _preProcess : function(pl, o) { - //console.log('Before preprocess:' + o.content); - - var ed = this.editor, - h = o.content, - grep = tinymce.grep, - explode = tinymce.explode, - trim = tinymce.trim, - len, stripClass; - - function process(items) { - each(items, function(v) { - // Remove or replace - if (v.constructor == RegExp) - h = h.replace(v, ''); - else - h = h.replace(v[0], v[1]); - }); - } - - // Detect Word content and process it more aggressive - if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) { - o.wordContent = true; // Mark the pasted contents as word specific content - //console.log('Word contents detected.'); - - // Process away some basic content - process([ - /^\s*( )+/gi, //   entities at the start of contents - /( |]*>)+\s*$/gi //   entities at the end of contents - ]); - - if (getParam(ed, "paste_convert_headers_to_strong")) { - h = h.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

    $1

    "); - } - - if (getParam(ed, "paste_convert_middot_lists")) { - process([ - [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker - [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers - ]); - } - - process([ - // Word comments like conditional comments etc - //gi, - - // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags - /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, - - // Convert into for line-though - [/<(\/?)s>/gi, "<$1strike>"], - - // Replace nsbp entites to char since it's easier to handle - [/ /gi, "\u00a0"] - ]); - - // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag. - // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot. - do { - len = h.length; - h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1"); - } while (len != h.length); - - // Remove all spans if no styles is to be retained - if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) { - h = h.replace(/<\/?span[^>]*>/gi, ""); - } else { - // We're keeping styles, so at least clean them up. - // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx - - process([ - // Convert ___ to string of alternating breaking/non-breaking spaces of same length - [/([\s\u00a0]*)<\/span>/gi, - function(str, spaces) { - return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : ""; - } - ], - - // Examine all styles: delete junk, transform some, and keep the rest - [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi, - function(str, tag, style) { - var n = [], - i = 0, - s = explode(trim(style).replace(/"/gi, "'"), ";"); - - // Examine each style definition within the tag's style attribute - each(s, function(v) { - var name, value, - parts = explode(v, ":"); - - function ensureUnits(v) { - return v + ((v !== "0") && (/\d$/.test(v)))? "px" : ""; - } - - if (parts.length == 2) { - name = parts[0].toLowerCase(); - value = parts[1].toLowerCase(); - - // Translate certain MS Office styles into their CSS equivalents - switch (name) { - case "mso-padding-alt": - case "mso-padding-top-alt": - case "mso-padding-right-alt": - case "mso-padding-bottom-alt": - case "mso-padding-left-alt": - case "mso-margin-alt": - case "mso-margin-top-alt": - case "mso-margin-right-alt": - case "mso-margin-bottom-alt": - case "mso-margin-left-alt": - case "mso-table-layout-alt": - case "mso-height": - case "mso-width": - case "mso-vertical-align-alt": - n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value); - return; - - case "horiz-align": - n[i++] = "text-align:" + value; - return; - - case "vert-align": - n[i++] = "vertical-align:" + value; - return; - - case "font-color": - case "mso-foreground": - n[i++] = "color:" + value; - return; - - case "mso-background": - case "mso-highlight": - n[i++] = "background:" + value; - return; - - case "mso-default-height": - n[i++] = "min-height:" + ensureUnits(value); - return; - - case "mso-default-width": - n[i++] = "min-width:" + ensureUnits(value); - return; - - case "mso-padding-between-alt": - n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value); - return; - - case "text-line-through": - if ((value == "single") || (value == "double")) { - n[i++] = "text-decoration:line-through"; - } - return; - - case "mso-zero-height": - if (value == "yes") { - n[i++] = "display:none"; - } - return; - } - - // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name - if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) { - return; - } - - // If it reached this point, it must be a valid CSS style - n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case - } - }); - - // If style attribute contained any valid styles the re-write it; otherwise delete style attribute. - if (i > 0) { - return tag + ' style="' + n.join(';') + '"'; - } else { - return tag; - } - } - ] - ]); - } - } - - // Replace headers with - if (getParam(ed, "paste_convert_headers_to_strong")) { - process([ - [/]*>/gi, "

    "], - [/<\/h[1-6][^>]*>/gi, "

    "] - ]); - } - - // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso"). - // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation. - stripClass = getParam(ed, "paste_strip_class_attributes"); - - if (stripClass !== "none") { - function removeClasses(match, g1) { - if (stripClass === "all") - return ''; - - var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "), - function(v) { - return (/^(?!mso)/i.test(v)); - } - ); - - return cls.length ? ' class="' + cls.join(" ") + '"' : ''; - }; - - h = h.replace(/ class="([^"]+)"/gi, removeClasses); - h = h.replace(/ class=(\w+)/gi, removeClasses); - } - - // Remove spans option - if (getParam(ed, "paste_remove_spans")) { - h = h.replace(/<\/?span[^>]*>/gi, ""); - } - - //console.log('After preprocess:' + h); - - o.content = h; - }, - - /** - * Various post process items. - */ - _postProcess : function(pl, o) { - var t = this, ed = t.editor, dom = ed.dom, styleProps; - - if (o.wordContent) { - // Remove named anchors or TOC links - each(dom.select('a', o.node), function(a) { - if (!a.href || a.href.indexOf('#_Toc') != -1) - dom.remove(a, 1); - }); - - if (getParam(ed, "paste_convert_middot_lists")) { - t._convertLists(pl, o); - } - - // Process styles - styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties - - // Process only if a string was specified and not equal to "all" or "*" - if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) { - styleProps = tinymce.explode(styleProps.replace(/^none$/i, "")); - - // Retains some style properties - each(dom.select('*', o.node), function(el) { - var newStyle = {}, npc = 0, i, sp, sv; - - // Store a subset of the existing styles - if (styleProps) { - for (i = 0; i < styleProps.length; i++) { - sp = styleProps[i]; - sv = dom.getStyle(el, sp); - - if (sv) { - newStyle[sp] = sv; - npc++; - } - } - } - - // Remove all of the existing styles - dom.setAttrib(el, 'style', ''); - - if (styleProps && npc > 0) - dom.setStyles(el, newStyle); // Add back the stored subset of styles - else // Remove empty span tags that do not have class attributes - if (el.nodeName == 'SPAN' && !el.className) - dom.remove(el, true); - }); - } - } - - // Remove all style information or only specifically on WebKit to avoid the style bug on that browser - if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) { - each(dom.select('*[style]', o.node), function(el) { - el.removeAttribute('style'); - el.removeAttribute('_mce_style'); - }); - } else { - if (tinymce.isWebKit) { - // We need to compress the styles on WebKit since if you paste it will become - // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles - each(dom.select('*', o.node), function(el) { - el.removeAttribute('_mce_style'); - }); - } - } - }, - - /** - * Converts the most common bullet and number formats in Office into a real semantic UL/LI list. - */ - _convertLists : function(pl, o) { - var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html; - - // Convert middot lists into real semantic lists - each(dom.select('p', o.node), function(p) { - var sib, val = '', type, html, idx, parents; - - // Get text node value at beginning of paragraph - for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling) - val += sib.nodeValue; - - val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0'); - - // Detect unordered lists look for bullets - if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(val)) - type = 'ul'; - - // Detect ordered lists 1., a. or ixv. - if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(val)) - type = 'ol'; - - // Check if node value matches the list pattern: o   - if (type) { - margin = parseFloat(p.style.marginLeft || 0); - - if (margin > lastMargin) - levels.push(margin); - - if (!listElm || type != lastType) { - listElm = dom.create(type); - dom.insertAfter(listElm, p); - } else { - // Nested list element - if (margin > lastMargin) { - listElm = li.appendChild(dom.create(type)); - } else if (margin < lastMargin) { - // Find parent level based on margin value - idx = tinymce.inArray(levels, margin); - parents = dom.getParents(listElm.parentNode, type); - listElm = parents[parents.length - 1 - idx] || listElm; - } - } - - // Remove middot or number spans if they exists - each(dom.select('span', p), function(span) { - var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, ''); - - // Remove span with the middot or the number - if (type == 'ul' && /^[\u2022\u00b7\u00a7\u00d8o]/.test(html)) - dom.remove(span); - else if (/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) - dom.remove(span); - }); - - html = p.innerHTML; - - // Remove middot/list items - if (type == 'ul') - html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/, ''); - else - html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); - - // Create li and add paragraph data into the new li - li = listElm.appendChild(dom.create('li', 0, html)); - dom.remove(p); - - lastMargin = margin; - lastType = type; - } else - listElm = lastMargin = 0; // End list element - }); - - // Remove any left over makers - html = o.node.innerHTML; - if (html.indexOf('__MCE_ITEM__') != -1) - o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); - }, - - /** - * This method will split the current block parent and insert the contents inside the split position. - * This logic can be improved so text nodes at the start/end remain in the start/end block elements - */ - _insertBlockContent : function(ed, dom, content) { - var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight, markerId = 'mce_marker'; - - function select(n) { - var r; - - if (tinymce.isIE) { - r = ed.getDoc().body.createTextRange(); - r.moveToElementText(n); - r.collapse(false); - r.select(); - } else { - sel.select(n, 1); - sel.collapse(false); - } - } - - // Insert a marker for the caret position - this._insert(' ', 1); - marker = dom.get(markerId); - parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol,th,td'); - - // If it's a parent block but not a table cell - if (parentBlock && !/TD|TH/.test(parentBlock.nodeName)) { - // Split parent block - marker = dom.split(parentBlock, marker); - - // Insert nodes before the marker - each(dom.create('div', 0, content).childNodes, function(n) { - last = marker.parentNode.insertBefore(n.cloneNode(true), marker); - }); - - // Move caret after marker - select(last); - } else { - dom.setOuterHTML(marker, content); - sel.select(ed.getBody(), 1); - sel.collapse(0); - } - - // Remove marker if it's left - while (elm = dom.get(markerId)) - dom.remove(elm); - - // Get element, position and height - elm = sel.getStart(); - vp = dom.getViewPort(ed.getWin()); - y = ed.dom.getPos(elm).y; - elmHeight = elm.clientHeight; - - // Is element within viewport if not then scroll it into view - if (y < vp.y || y + elmHeight > vp.y + vp.h) - ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25; - }, - - /** - * Inserts the specified contents at the caret position. - */ - _insert : function(h, skip_undo) { - var ed = this.editor; - - // First delete the contents seems to work better on WebKit - if (!ed.selection.isCollapsed()) - ed.getDoc().execCommand('Delete', false, null); - - // It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents - ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo}); - }, - - /** - * Instead of the old plain text method which tried to re-create a paste operation, the - * new approach adds a plain text mode toggle switch that changes the behavior of paste. - * This function is passed the same input that the regular paste plugin produces. - * It performs additional scrubbing and produces (and inserts) the plain text. - * This approach leverages all of the great existing functionality in the paste - * plugin, and requires minimal changes to add the new functionality. - * Speednet - June 2009 - */ - _insertPlainText : function(ed, dom, h) { - var i, len, pos, rpos, node, breakElms, before, after, - w = ed.getWin(), - d = ed.getDoc(), - sel = ed.selection, - is = tinymce.is, - inArray = tinymce.inArray, - linebr = getParam(ed, "paste_text_linebreaktype"), - rl = getParam(ed, "paste_text_replacements"); - - function process(items) { - each(items, function(v) { - if (v.constructor == RegExp) - h = h.replace(v, ""); - else - h = h.replace(v[0], v[1]); - }); - }; - - if ((typeof(h) === "string") && (h.length > 0)) { - if (!entities) - entities = ("34,quot,38,amp,39,apos,60,lt,62,gt," + ed.serializer.settings.entities).split(","); - - // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line - if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) { - process([ - /[\n\r]+/g - ]); - } else { - // Otherwise just get rid of carriage returns (only need linefeeds) - process([ - /\r+/g - ]); - } - - process([ - [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them - [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
    tags and table rows - [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them - /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags - [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) - [ - // HTML entity - /&(#\d+|[a-z0-9]{1,10});/gi, - - // Replace with actual character - function(e, s) { - if (s.charAt(0) === "#") { - return String.fromCharCode(s.slice(1)); - } - else { - return ((e = inArray(entities, s)) > 0)? String.fromCharCode(entities[e-1]) : " "; - } - } - ], - [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars. - [/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks - /^\s+|\s+$/g // Trim the front & back - ]); - - h = dom.encode(h); - - // Delete any highlighted text before pasting - if (!sel.isCollapsed()) { - d.execCommand("Delete", false, null); - } - - // Perform default or custom replacements - if (is(rl, "array") || (is(rl, "array"))) { - process(rl); - } - else if (is(rl, "string")) { - process(new RegExp(rl, "gi")); - } - - // Treat paragraphs as specified in the config - if (linebr == "none") { - process([ - [/\n+/g, " "] - ]); - } - else if (linebr == "br") { - process([ - [/\n/g, "
    "] - ]); - } - else { - process([ - /^\s+|\s+$/g, - [/\n\n/g, "

    "], - [/\n/g, "
    "] - ]); - } - - // This next piece of code handles the situation where we're pasting more than one paragraph of plain - // text, and we are pasting the content into the middle of a block node in the editor. The block - // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining). - // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the - // pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between - // "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and - // now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the - // plain text take the same style as the existing paragraph.) - if ((pos = h.indexOf("

    ")) != -1) { - rpos = h.lastIndexOf("

    "); - node = sel.getNode(); - breakElms = []; // Get list of elements to break - - do { - if (node.nodeType == 1) { - // Don't break tables and break at body - if (node.nodeName == "TD" || node.nodeName == "BODY") { - break; - } - - breakElms[breakElms.length] = node; - } - } while (node = node.parentNode); - - // Are we in the middle of a block node? - if (breakElms.length > 0) { - before = h.substring(0, pos); - after = ""; - - for (i=0, len=breakElms.length; i"; - after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">"; - } - - if (pos == rpos) { - h = before + after + h.substring(pos+7); - } - else { - h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7); - } - } - } - - // Insert content at the caret, plus add a marker for repositioning the caret - ed.execCommand("mceInsertRawHTML", false, h + ' '); - - // Reposition the caret to the marker, which was placed immediately after the inserted content. - // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers. - // The second part of the code scrolls the content up if the caret is positioned off-screen. - // This is only necessary for WebKit browsers, but it doesn't hurt to use for all. - window.setTimeout(function() { - var marker = dom.get('_plain_text_marker'), - elm, vp, y, elmHeight; - - sel.select(marker, false); - d.execCommand("Delete", false, null); - marker = null; - - // Get element, position and height - elm = sel.getStart(); - vp = dom.getViewPort(w); - y = dom.getPos(elm).y; - elmHeight = elm.clientHeight; - - // Is element within viewport if not then scroll it into view - if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) { - d.body.scrollTop = y < vp.y ? y : y - vp.h + 25; - } - }, 0); - } - }, - - /** - * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine. - */ - _legacySupport : function() { - var t = this, ed = t.editor; - - // Register command(s) for backwards compatibility - ed.addCommand("mcePasteWord", function() { - ed.windowManager.open({ - file: t.url + "/pasteword.htm", - width: parseInt(getParam(ed, "paste_dialog_width")), - height: parseInt(getParam(ed, "paste_dialog_height")), - inline: 1 - }); - }); - - if (getParam(ed, "paste_text_use_dialog")) { - ed.addCommand("mcePasteText", function() { - ed.windowManager.open({ - file : t.url + "/pastetext.htm", - width: parseInt(getParam(ed, "paste_dialog_width")), - height: parseInt(getParam(ed, "paste_dialog_height")), - inline : 1 - }); - }); - } - - // Register button for backwards compatibility - ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"}); - } - }); - - // Register plugin - tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin); -})(); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var each = tinymce.each, + entities = null, + defs = { + paste_auto_cleanup_on_paste : true, + paste_block_drop : false, + paste_retain_style_properties : "none", + paste_strip_class_attributes : "mso", + paste_remove_spans : false, + paste_remove_styles : false, + paste_remove_styles_if_webkit : true, + paste_convert_middot_lists : true, + paste_convert_headers_to_strong : false, + paste_dialog_width : "450", + paste_dialog_height : "400", + paste_text_use_dialog : false, + paste_text_sticky : false, + paste_text_notifyalways : false, + paste_text_linebreaktype : "p", + paste_text_replacements : [ + [/\u2026/g, "..."], + [/[\x93\x94\u201c\u201d]/g, '"'], + [/[\x60\x91\x92\u2018\u2019]/g, "'"] + ] + }; + + function getParam(ed, name) { + return ed.getParam(name, defs[name]); + } + + tinymce.create('tinymce.plugins.PastePlugin', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + t.url = url; + + // Setup plugin events + t.onPreProcess = new tinymce.util.Dispatcher(t); + t.onPostProcess = new tinymce.util.Dispatcher(t); + + // Register default handlers + t.onPreProcess.add(t._preProcess); + t.onPostProcess.add(t._postProcess); + + // Register optional preprocess handler + t.onPreProcess.add(function(pl, o) { + ed.execCallback('paste_preprocess', pl, o); + }); + + // Register optional postprocess + t.onPostProcess.add(function(pl, o) { + ed.execCallback('paste_postprocess', pl, o); + }); + + // Initialize plain text flag + ed.pasteAsPlainText = false; + + // This function executes the process handlers and inserts the contents + // force_rich overrides plain text mode set by user, important for pasting with execCommand + function process(o, force_rich) { + var dom = ed.dom; + + // Execute pre process handlers + t.onPreProcess.dispatch(t, o); + + // Create DOM structure + o.node = dom.create('div', 0, o.content); + + // Execute post process handlers + t.onPostProcess.dispatch(t, o); + + // Serialize content + o.content = ed.serializer.serialize(o.node, {getInner : 1}); + + // Plain text option active? + if ((!force_rich) && (ed.pasteAsPlainText)) { + t._insertPlainText(ed, dom, o.content); + + if (!getParam(ed, "paste_text_sticky")) { + ed.pasteAsPlainText = false; + ed.controlManager.setActive("pastetext", false); + } + } else if (/<(p|h[1-6]|ul|ol)/.test(o.content)) { + // Handle insertion of contents containing block elements separately + t._insertBlockContent(ed, dom, o.content); + } else { + t._insert(o.content); + } + } + + // Add command for external usage + ed.addCommand('mceInsertClipboardContent', function(u, o) { + process(o, true); + }); + + if (!getParam(ed, "paste_text_use_dialog")) { + ed.addCommand('mcePasteText', function(u, v) { + var cookie = tinymce.util.Cookie; + + ed.pasteAsPlainText = !ed.pasteAsPlainText; + ed.controlManager.setActive('pastetext', ed.pasteAsPlainText); + + if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) { + if (getParam(ed, "paste_text_sticky")) { + ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); + } else { + ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); + } + + if (!getParam(ed, "paste_text_notifyalways")) { + cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31)) + } + } + }); + } + + ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'}); + ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'}); + + // This function grabs the contents from the clipboard by adding a + // hidden div and placing the caret inside it and after the browser paste + // is done it grabs that contents and processes that + function grabContent(e) { + var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY; + + if (dom.get('_mcePaste')) + return; + + // Create container to paste into + n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF'); + + // If contentEditable mode we need to find out the position of the closest element + if (body != ed.getDoc().body) + posY = dom.getPos(ed.selection.getStart(), body).y; + else + posY = body.scrollTop; + + // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles + dom.setStyles(n, { + position : 'absolute', + left : -10000, + top : posY, + width : 1, + height : 1, + overflow : 'hidden' + }); + + if (tinymce.isIE) { + // Select the container + rng = dom.doc.body.createTextRange(); + rng.moveToElementText(n); + rng.execCommand('Paste'); + + // Remove container + dom.remove(n); + + // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due + // to IE security settings so we pass the junk though better than nothing right + if (n.innerHTML === '\uFEFF') { + ed.execCommand('mcePasteWord'); + e.preventDefault(); + return; + } + + // Process contents + process({content : n.innerHTML}); + + // Block the real paste event + return tinymce.dom.Event.cancel(e); + } else { + function block(e) { + e.preventDefault(); + }; + + // Block mousedown and click to prevent selection change + dom.bind(ed.getDoc(), 'mousedown', block); + dom.bind(ed.getDoc(), 'keydown', block); + + or = ed.selection.getRng(); + + // Move caret into hidden div + n = n.firstChild; + rng = ed.getDoc().createRange(); + rng.setStart(n, 0); + rng.setEnd(n, 1); + sel.setRng(rng); + + // Wait a while and grab the pasted contents + window.setTimeout(function() { + var h = '', nl = dom.select('div.mcePaste'); + + // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string + each(nl, function(n) { + // WebKit duplicates the divs so we need to remove them + each(dom.select('div.mcePaste', n), function(n) { + dom.remove(n, 1); + }); + + // Contents in WebKit is sometimes wrapped in a apple style span so we need to grab it from that one + h += (dom.select('> span.Apple-style-span div', n)[0] || dom.select('> span.Apple-style-span', n)[0] || n).innerHTML; + }); + + // Remove the nodes + each(nl, function(n) { + dom.remove(n); + }); + + // Restore the old selection + if (or) + sel.setRng(or); + + process({content : h}); + + // Unblock events ones we got the contents + dom.unbind(ed.getDoc(), 'mousedown', block); + dom.unbind(ed.getDoc(), 'keydown', block); + }, 0); + } + } + + // Check if we should use the new auto process method + if (getParam(ed, "paste_auto_cleanup_on_paste")) { + // Is it's Opera or older FF use key handler + if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) { + ed.onKeyDown.add(function(ed, e) { + if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) + grabContent(e); + }); + } else { + // Grab contents on paste event on Gecko and WebKit + ed.onPaste.addToTop(function(ed, e) { + return grabContent(e); + }); + } + } + + // Block all drag/drop events + if (getParam(ed, "paste_block_drop")) { + ed.onInit.add(function() { + ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) { + e.preventDefault(); + e.stopPropagation(); + + return false; + }); + }); + } + + // Add legacy support + t._legacySupport(); + }, + + getInfo : function() { + return { + longname : 'Paste text/word', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _preProcess : function(pl, o) { + //console.log('Before preprocess:' + o.content); + + var ed = this.editor, + h = o.content, + grep = tinymce.grep, + explode = tinymce.explode, + trim = tinymce.trim, + len, stripClass; + + function process(items) { + each(items, function(v) { + // Remove or replace + if (v.constructor == RegExp) + h = h.replace(v, ''); + else + h = h.replace(v[0], v[1]); + }); + } + + // Detect Word content and process it more aggressive + if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) { + o.wordContent = true; // Mark the pasted contents as word specific content + //console.log('Word contents detected.'); + + // Process away some basic content + process([ + /^\s*( )+/gi, //   entities at the start of contents + /( |]*>)+\s*$/gi //   entities at the end of contents + ]); + + if (getParam(ed, "paste_convert_headers_to_strong")) { + h = h.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

    $1

    "); + } + + if (getParam(ed, "paste_convert_middot_lists")) { + process([ + [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker + [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers + ]); + } + + process([ + // Word comments like conditional comments etc + //gi, + + // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags + /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, + + // Convert into for line-though + [/<(\/?)s>/gi, "<$1strike>"], + + // Replace nsbp entites to char since it's easier to handle + [/ /gi, "\u00a0"] + ]); + + // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag. + // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot. + do { + len = h.length; + h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1"); + } while (len != h.length); + + // Remove all spans if no styles is to be retained + if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) { + h = h.replace(/<\/?span[^>]*>/gi, ""); + } else { + // We're keeping styles, so at least clean them up. + // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx + + process([ + // Convert ___ to string of alternating breaking/non-breaking spaces of same length + [/([\s\u00a0]*)<\/span>/gi, + function(str, spaces) { + return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : ""; + } + ], + + // Examine all styles: delete junk, transform some, and keep the rest + [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi, + function(str, tag, style) { + var n = [], + i = 0, + s = explode(trim(style).replace(/"/gi, "'"), ";"); + + // Examine each style definition within the tag's style attribute + each(s, function(v) { + var name, value, + parts = explode(v, ":"); + + function ensureUnits(v) { + return v + ((v !== "0") && (/\d$/.test(v)))? "px" : ""; + } + + if (parts.length == 2) { + name = parts[0].toLowerCase(); + value = parts[1].toLowerCase(); + + // Translate certain MS Office styles into their CSS equivalents + switch (name) { + case "mso-padding-alt": + case "mso-padding-top-alt": + case "mso-padding-right-alt": + case "mso-padding-bottom-alt": + case "mso-padding-left-alt": + case "mso-margin-alt": + case "mso-margin-top-alt": + case "mso-margin-right-alt": + case "mso-margin-bottom-alt": + case "mso-margin-left-alt": + case "mso-table-layout-alt": + case "mso-height": + case "mso-width": + case "mso-vertical-align-alt": + n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value); + return; + + case "horiz-align": + n[i++] = "text-align:" + value; + return; + + case "vert-align": + n[i++] = "vertical-align:" + value; + return; + + case "font-color": + case "mso-foreground": + n[i++] = "color:" + value; + return; + + case "mso-background": + case "mso-highlight": + n[i++] = "background:" + value; + return; + + case "mso-default-height": + n[i++] = "min-height:" + ensureUnits(value); + return; + + case "mso-default-width": + n[i++] = "min-width:" + ensureUnits(value); + return; + + case "mso-padding-between-alt": + n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value); + return; + + case "text-line-through": + if ((value == "single") || (value == "double")) { + n[i++] = "text-decoration:line-through"; + } + return; + + case "mso-zero-height": + if (value == "yes") { + n[i++] = "display:none"; + } + return; + } + + // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name + if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) { + return; + } + + // If it reached this point, it must be a valid CSS style + n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case + } + }); + + // If style attribute contained any valid styles the re-write it; otherwise delete style attribute. + if (i > 0) { + return tag + ' style="' + n.join(';') + '"'; + } else { + return tag; + } + } + ] + ]); + } + } + + // Replace headers with + if (getParam(ed, "paste_convert_headers_to_strong")) { + process([ + [/]*>/gi, "

    "], + [/<\/h[1-6][^>]*>/gi, "

    "] + ]); + } + + // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso"). + // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation. + stripClass = getParam(ed, "paste_strip_class_attributes"); + + if (stripClass !== "none") { + function removeClasses(match, g1) { + if (stripClass === "all") + return ''; + + var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "), + function(v) { + return (/^(?!mso)/i.test(v)); + } + ); + + return cls.length ? ' class="' + cls.join(" ") + '"' : ''; + }; + + h = h.replace(/ class="([^"]+)"/gi, removeClasses); + h = h.replace(/ class=(\w+)/gi, removeClasses); + } + + // Remove spans option + if (getParam(ed, "paste_remove_spans")) { + h = h.replace(/<\/?span[^>]*>/gi, ""); + } + + //console.log('After preprocess:' + h); + + o.content = h; + }, + + /** + * Various post process items. + */ + _postProcess : function(pl, o) { + var t = this, ed = t.editor, dom = ed.dom, styleProps; + + if (o.wordContent) { + // Remove named anchors or TOC links + each(dom.select('a', o.node), function(a) { + if (!a.href || a.href.indexOf('#_Toc') != -1) + dom.remove(a, 1); + }); + + if (getParam(ed, "paste_convert_middot_lists")) { + t._convertLists(pl, o); + } + + // Process styles + styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties + + // Process only if a string was specified and not equal to "all" or "*" + if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) { + styleProps = tinymce.explode(styleProps.replace(/^none$/i, "")); + + // Retains some style properties + each(dom.select('*', o.node), function(el) { + var newStyle = {}, npc = 0, i, sp, sv; + + // Store a subset of the existing styles + if (styleProps) { + for (i = 0; i < styleProps.length; i++) { + sp = styleProps[i]; + sv = dom.getStyle(el, sp); + + if (sv) { + newStyle[sp] = sv; + npc++; + } + } + } + + // Remove all of the existing styles + dom.setAttrib(el, 'style', ''); + + if (styleProps && npc > 0) + dom.setStyles(el, newStyle); // Add back the stored subset of styles + else // Remove empty span tags that do not have class attributes + if (el.nodeName == 'SPAN' && !el.className) + dom.remove(el, true); + }); + } + } + + // Remove all style information or only specifically on WebKit to avoid the style bug on that browser + if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) { + each(dom.select('*[style]', o.node), function(el) { + el.removeAttribute('style'); + el.removeAttribute('_mce_style'); + }); + } else { + if (tinymce.isWebKit) { + // We need to compress the styles on WebKit since if you paste it will become + // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles + each(dom.select('*', o.node), function(el) { + el.removeAttribute('_mce_style'); + }); + } + } + }, + + /** + * Converts the most common bullet and number formats in Office into a real semantic UL/LI list. + */ + _convertLists : function(pl, o) { + var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html; + + // Convert middot lists into real semantic lists + each(dom.select('p', o.node), function(p) { + var sib, val = '', type, html, idx, parents; + + // Get text node value at beginning of paragraph + for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling) + val += sib.nodeValue; + + val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0'); + + // Detect unordered lists look for bullets + if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(val)) + type = 'ul'; + + // Detect ordered lists 1., a. or ixv. + if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(val)) + type = 'ol'; + + // Check if node value matches the list pattern: o   + if (type) { + margin = parseFloat(p.style.marginLeft || 0); + + if (margin > lastMargin) + levels.push(margin); + + if (!listElm || type != lastType) { + listElm = dom.create(type); + dom.insertAfter(listElm, p); + } else { + // Nested list element + if (margin > lastMargin) { + listElm = li.appendChild(dom.create(type)); + } else if (margin < lastMargin) { + // Find parent level based on margin value + idx = tinymce.inArray(levels, margin); + parents = dom.getParents(listElm.parentNode, type); + listElm = parents[parents.length - 1 - idx] || listElm; + } + } + + // Remove middot or number spans if they exists + each(dom.select('span', p), function(span) { + var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, ''); + + // Remove span with the middot or the number + if (type == 'ul' && /^[\u2022\u00b7\u00a7\u00d8o]/.test(html)) + dom.remove(span); + else if (/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) + dom.remove(span); + }); + + html = p.innerHTML; + + // Remove middot/list items + if (type == 'ul') + html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/, ''); + else + html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); + + // Create li and add paragraph data into the new li + li = listElm.appendChild(dom.create('li', 0, html)); + dom.remove(p); + + lastMargin = margin; + lastType = type; + } else + listElm = lastMargin = 0; // End list element + }); + + // Remove any left over makers + html = o.node.innerHTML; + if (html.indexOf('__MCE_ITEM__') != -1) + o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); + }, + + /** + * This method will split the current block parent and insert the contents inside the split position. + * This logic can be improved so text nodes at the start/end remain in the start/end block elements + */ + _insertBlockContent : function(ed, dom, content) { + var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight, markerId = 'mce_marker'; + + function select(n) { + var r; + + if (tinymce.isIE) { + r = ed.getDoc().body.createTextRange(); + r.moveToElementText(n); + r.collapse(false); + r.select(); + } else { + sel.select(n, 1); + sel.collapse(false); + } + } + + // Insert a marker for the caret position + this._insert(' ', 1); + marker = dom.get(markerId); + parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol,th,td'); + + // If it's a parent block but not a table cell + if (parentBlock && !/TD|TH/.test(parentBlock.nodeName)) { + // Split parent block + marker = dom.split(parentBlock, marker); + + // Insert nodes before the marker + each(dom.create('div', 0, content).childNodes, function(n) { + last = marker.parentNode.insertBefore(n.cloneNode(true), marker); + }); + + // Move caret after marker + select(last); + } else { + dom.setOuterHTML(marker, content); + sel.select(ed.getBody(), 1); + sel.collapse(0); + } + + // Remove marker if it's left + while (elm = dom.get(markerId)) + dom.remove(elm); + + // Get element, position and height + elm = sel.getStart(); + vp = dom.getViewPort(ed.getWin()); + y = ed.dom.getPos(elm).y; + elmHeight = elm.clientHeight; + + // Is element within viewport if not then scroll it into view + if (y < vp.y || y + elmHeight > vp.y + vp.h) + ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25; + }, + + /** + * Inserts the specified contents at the caret position. + */ + _insert : function(h, skip_undo) { + var ed = this.editor; + + // First delete the contents seems to work better on WebKit + if (!ed.selection.isCollapsed()) + ed.getDoc().execCommand('Delete', false, null); + + // It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents + ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo}); + }, + + /** + * Instead of the old plain text method which tried to re-create a paste operation, the + * new approach adds a plain text mode toggle switch that changes the behavior of paste. + * This function is passed the same input that the regular paste plugin produces. + * It performs additional scrubbing and produces (and inserts) the plain text. + * This approach leverages all of the great existing functionality in the paste + * plugin, and requires minimal changes to add the new functionality. + * Speednet - June 2009 + */ + _insertPlainText : function(ed, dom, h) { + var i, len, pos, rpos, node, breakElms, before, after, + w = ed.getWin(), + d = ed.getDoc(), + sel = ed.selection, + is = tinymce.is, + inArray = tinymce.inArray, + linebr = getParam(ed, "paste_text_linebreaktype"), + rl = getParam(ed, "paste_text_replacements"); + + function process(items) { + each(items, function(v) { + if (v.constructor == RegExp) + h = h.replace(v, ""); + else + h = h.replace(v[0], v[1]); + }); + }; + + if ((typeof(h) === "string") && (h.length > 0)) { + if (!entities) + entities = ("34,quot,38,amp,39,apos,60,lt,62,gt," + ed.serializer.settings.entities).split(","); + + // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line + if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) { + process([ + /[\n\r]+/g + ]); + } else { + // Otherwise just get rid of carriage returns (only need linefeeds) + process([ + /\r+/g + ]); + } + + process([ + [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them + [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
    tags and table rows + [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them + /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags + [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) + [ + // HTML entity + /&(#\d+|[a-z0-9]{1,10});/gi, + + // Replace with actual character + function(e, s) { + if (s.charAt(0) === "#") { + return String.fromCharCode(s.slice(1)); + } + else { + return ((e = inArray(entities, s)) > 0)? String.fromCharCode(entities[e-1]) : " "; + } + } + ], + [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars. + [/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks + /^\s+|\s+$/g // Trim the front & back + ]); + + h = dom.encode(h); + + // Delete any highlighted text before pasting + if (!sel.isCollapsed()) { + d.execCommand("Delete", false, null); + } + + // Perform default or custom replacements + if (is(rl, "array") || (is(rl, "array"))) { + process(rl); + } + else if (is(rl, "string")) { + process(new RegExp(rl, "gi")); + } + + // Treat paragraphs as specified in the config + if (linebr == "none") { + process([ + [/\n+/g, " "] + ]); + } + else if (linebr == "br") { + process([ + [/\n/g, "
    "] + ]); + } + else { + process([ + /^\s+|\s+$/g, + [/\n\n/g, "

    "], + [/\n/g, "
    "] + ]); + } + + // This next piece of code handles the situation where we're pasting more than one paragraph of plain + // text, and we are pasting the content into the middle of a block node in the editor. The block + // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining). + // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the + // pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between + // "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and + // now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the + // plain text take the same style as the existing paragraph.) + if ((pos = h.indexOf("

    ")) != -1) { + rpos = h.lastIndexOf("

    "); + node = sel.getNode(); + breakElms = []; // Get list of elements to break + + do { + if (node.nodeType == 1) { + // Don't break tables and break at body + if (node.nodeName == "TD" || node.nodeName == "BODY") { + break; + } + + breakElms[breakElms.length] = node; + } + } while (node = node.parentNode); + + // Are we in the middle of a block node? + if (breakElms.length > 0) { + before = h.substring(0, pos); + after = ""; + + for (i=0, len=breakElms.length; i"; + after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">"; + } + + if (pos == rpos) { + h = before + after + h.substring(pos+7); + } + else { + h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7); + } + } + } + + // Insert content at the caret, plus add a marker for repositioning the caret + ed.execCommand("mceInsertRawHTML", false, h + ' '); + + // Reposition the caret to the marker, which was placed immediately after the inserted content. + // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers. + // The second part of the code scrolls the content up if the caret is positioned off-screen. + // This is only necessary for WebKit browsers, but it doesn't hurt to use for all. + window.setTimeout(function() { + var marker = dom.get('_plain_text_marker'), + elm, vp, y, elmHeight; + + sel.select(marker, false); + d.execCommand("Delete", false, null); + marker = null; + + // Get element, position and height + elm = sel.getStart(); + vp = dom.getViewPort(w); + y = dom.getPos(elm).y; + elmHeight = elm.clientHeight; + + // Is element within viewport if not then scroll it into view + if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) { + d.body.scrollTop = y < vp.y ? y : y - vp.h + 25; + } + }, 0); + } + }, + + /** + * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine. + */ + _legacySupport : function() { + var t = this, ed = t.editor; + + // Register command(s) for backwards compatibility + ed.addCommand("mcePasteWord", function() { + ed.windowManager.open({ + file: t.url + "/pasteword.htm", + width: parseInt(getParam(ed, "paste_dialog_width")), + height: parseInt(getParam(ed, "paste_dialog_height")), + inline: 1 + }); + }); + + if (getParam(ed, "paste_text_use_dialog")) { + ed.addCommand("mcePasteText", function() { + ed.windowManager.open({ + file : t.url + "/pastetext.htm", + width: parseInt(getParam(ed, "paste_dialog_width")), + height: parseInt(getParam(ed, "paste_dialog_height")), + inline : 1 + }); + }); + } + + // Register button for backwards compatibility + ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"}); + } + }); + + // Register plugin + tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin); +})(); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pastetext.js b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pastetext.js old mode 100755 new mode 100644 index c524f9eb..81b1d6a0 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pastetext.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pastetext.js @@ -1,36 +1,36 @@ -tinyMCEPopup.requireLangPack(); - -var PasteTextDialog = { - init : function() { - this.resize(); - }, - - insert : function() { - var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; - - // Convert linebreaks into paragraphs - if (document.getElementById('linebreaks').checked) { - lines = h.split(/\r?\n/); - if (lines.length > 1) { - h = ''; - tinymce.each(lines, function(row) { - h += '

    ' + row + '

    '; - }); - } - } - - tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); - tinyMCEPopup.close(); - }, - - resize : function() { - var vp = tinyMCEPopup.dom.getViewPort(window), el; - - el = document.getElementById('content'); - - el.style.width = (vp.w - 20) + 'px'; - el.style.height = (vp.h - 90) + 'px'; - } -}; - -tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); +tinyMCEPopup.requireLangPack(); + +var PasteTextDialog = { + init : function() { + this.resize(); + }, + + insert : function() { + var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; + + // Convert linebreaks into paragraphs + if (document.getElementById('linebreaks').checked) { + lines = h.split(/\r?\n/); + if (lines.length > 1) { + h = ''; + tinymce.each(lines, function(row) { + h += '

    ' + row + '

    '; + }); + } + } + + tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); + tinyMCEPopup.close(); + }, + + resize : function() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('content'); + + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 90) + 'px'; + } +}; + +tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pasteword.js b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pasteword.js old mode 100755 new mode 100644 index a52731c3..959bf399 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pasteword.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/js/pasteword.js @@ -1,51 +1,51 @@ -tinyMCEPopup.requireLangPack(); - -var PasteWordDialog = { - init : function() { - var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; - - // Create iframe - el.innerHTML = ''; - ifr = document.getElementById('iframe'); - doc = ifr.contentWindow.document; - - // Force absolute CSS urls - css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; - css = css.concat(tinymce.explode(ed.settings.content_css) || []); - tinymce.each(css, function(u) { - cssHTML += ''; - }); - - // Write content into iframe - doc.open(); - doc.write('' + cssHTML + ''); - doc.close(); - - doc.designMode = 'on'; - this.resize(); - - window.setTimeout(function() { - ifr.contentWindow.focus(); - }, 10); - }, - - insert : function() { - var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; - - tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); - tinyMCEPopup.close(); - }, - - resize : function() { - var vp = tinyMCEPopup.dom.getViewPort(window), el; - - el = document.getElementById('iframe'); - - if (el) { - el.style.width = (vp.w - 20) + 'px'; - el.style.height = (vp.h - 90) + 'px'; - } - } -}; - -tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); +tinyMCEPopup.requireLangPack(); + +var PasteWordDialog = { + init : function() { + var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; + + // Create iframe + el.innerHTML = ''; + ifr = document.getElementById('iframe'); + doc = ifr.contentWindow.document; + + // Force absolute CSS urls + css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; + css = css.concat(tinymce.explode(ed.settings.content_css) || []); + tinymce.each(css, function(u) { + cssHTML += ''; + }); + + // Write content into iframe + doc.open(); + doc.write('' + cssHTML + ''); + doc.close(); + + doc.designMode = 'on'; + this.resize(); + + window.setTimeout(function() { + ifr.contentWindow.focus(); + }, 10); + }, + + insert : function() { + var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; + + tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); + tinyMCEPopup.close(); + }, + + resize : function() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('iframe'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 90) + 'px'; + } + } +}; + +tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js old mode 100755 new mode 100644 index eeac7789..823eb16a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js @@ -1,5 +1,5 @@ -tinyMCE.addI18n('en.paste_dlg',{ -text_title:"Use CTRL+V on your keyboard to paste the text into the window.", -text_linebreaks:"Keep linebreaks", -word_title:"Use CTRL+V on your keyboard to paste the text into the window." +tinyMCE.addI18n('en.paste_dlg',{ +text_title:"Use CTRL+V on your keyboard to paste the text into the window.", +text_linebreaks:"Keep linebreaks", +word_title:"Use CTRL+V on your keyboard to paste the text into the window." }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pastetext.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pastetext.htm old mode 100755 new mode 100644 index b6559454..8ccfbb97 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pastetext.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pastetext.htm @@ -1,27 +1,27 @@ - - - {#paste.paste_text_desc} - - - - -
    -
    {#paste.paste_text_desc}
    - -
    - -
    - -
    - -
    {#paste_dlg.text_title}
    - - - -
    - - -
    -
    - + + + {#paste.paste_text_desc} + + + + +
    +
    {#paste.paste_text_desc}
    + +
    + +
    + +
    + +
    {#paste_dlg.text_title}
    + + + +
    + + +
    +
    + \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pasteword.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pasteword.htm old mode 100755 new mode 100644 index 0f6bb412..7731f39c --- a/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pasteword.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/paste/pasteword.htm @@ -1,21 +1,21 @@ - - - {#paste.paste_word_desc} - - - - -
    -
    {#paste.paste_word_desc}
    - -
    {#paste_dlg.word_title}
    - -
    - -
    - - -
    -
    - - + + + {#paste.paste_word_desc} + + + + +
    +
    {#paste.paste_word_desc}
    + +
    {#paste_dlg.word_title}
    + +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/example.html b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/example.html old mode 100755 new mode 100644 index b2c3d90c..48202224 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/example.html +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/example.html @@ -1,28 +1,28 @@ - - - - - -Example of a custom preview page - - - -Editor contents:
    -
    - -
    - - - + + + + + +Example of a custom preview page + + + +Editor contents:
    +
    + +
    + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/jscripts/embed.js b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/jscripts/embed.js old mode 100755 new mode 100644 index f8dc8105..6fe25de0 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/preview/jscripts/embed.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/preview/jscripts/embed.js @@ -1,73 +1,73 @@ -/** - * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. - */ - -function writeFlash(p) { - writeEmbed( - 'D27CDB6E-AE6D-11cf-96B8-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'application/x-shockwave-flash', - p - ); -} - -function writeShockWave(p) { - writeEmbed( - '166B1BCA-3F9C-11CF-8075-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', - 'application/x-director', - p - ); -} - -function writeQuickTime(p) { - writeEmbed( - '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', - 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', - 'video/quicktime', - p - ); -} - -function writeRealMedia(p) { - writeEmbed( - 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'audio/x-pn-realaudio-plugin', - p - ); -} - -function writeWindowsMedia(p) { - p.url = p.src; - writeEmbed( - '6BF52A52-394A-11D3-B153-00C04F79FAA6', - 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', - 'application/x-mplayer2', - p - ); -} - -function writeEmbed(cls, cb, mt, p) { - var h = '', n; - - h += ''; - - h += ''; + + h += ' - - - - - -{#preview.preview_desc} - - - - - + + + + + + +{#preview.preview_desc} + + + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin_src.js old mode 100755 new mode 100644 index 3933fe65..47e666a3 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/print/editor_plugin_src.js @@ -1,34 +1,34 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.Print', { - init : function(ed, url) { - ed.addCommand('mcePrint', function() { - ed.getWin().print(); - }); - - ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); - }, - - getInfo : function() { - return { - longname : 'Print', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('print', tinymce.plugins.Print); -})(); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Print', { + init : function(ed, url) { + ed.addCommand('mcePrint', function() { + ed.getWin().print(); + }); + + ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); + }, + + getInfo : function() { + return { + longname : 'Print', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('print', tinymce.plugins.Print); +})(); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin_src.js old mode 100755 new mode 100644 index f5a3de8f..5ab6491c --- a/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/save/editor_plugin_src.js @@ -1,101 +1,101 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.Save', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceSave', t._save, t); - ed.addCommand('mceCancel', t._cancel, t); - - // Register buttons - ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'}); - ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'}); - - ed.onNodeChange.add(t._nodeChange, t); - ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave'); - }, - - getInfo : function() { - return { - longname : 'Save', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - _nodeChange : function(ed, cm, n) { - var ed = this.editor; - - if (ed.getParam('save_enablewhendirty')) { - cm.setDisabled('save', !ed.isDirty()); - cm.setDisabled('cancel', !ed.isDirty()); - } - }, - - // Private methods - - _save : function() { - var ed = this.editor, formObj, os, i, elementId; - - formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form'); - - if (ed.getParam("save_enablewhendirty") && !ed.isDirty()) - return; - - tinyMCE.triggerSave(); - - // Use callback instead - if (os = ed.getParam("save_onsavecallback")) { - if (ed.execCallback('save_onsavecallback', ed)) { - ed.startContent = tinymce.trim(ed.getContent({format : 'raw'})); - ed.nodeChanged(); - } - - return; - } - - if (formObj) { - ed.isNotDirty = true; - - if (formObj.onsubmit == null || formObj.onsubmit() != false) - formObj.submit(); - - ed.nodeChanged(); - } else - ed.windowManager.alert("Error: No form element found."); - }, - - _cancel : function() { - var ed = this.editor, os, h = tinymce.trim(ed.startContent); - - // Use callback instead - if (os = ed.getParam("save_oncancelcallback")) { - ed.execCallback('save_oncancelcallback', ed); - return; - } - - ed.setContent(h); - ed.undoManager.clear(); - ed.nodeChanged(); - } - }); - - // Register plugin - tinymce.PluginManager.add('save', tinymce.plugins.Save); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Save', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceSave', t._save, t); + ed.addCommand('mceCancel', t._cancel, t); + + // Register buttons + ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'}); + ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'}); + + ed.onNodeChange.add(t._nodeChange, t); + ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave'); + }, + + getInfo : function() { + return { + longname : 'Save', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _nodeChange : function(ed, cm, n) { + var ed = this.editor; + + if (ed.getParam('save_enablewhendirty')) { + cm.setDisabled('save', !ed.isDirty()); + cm.setDisabled('cancel', !ed.isDirty()); + } + }, + + // Private methods + + _save : function() { + var ed = this.editor, formObj, os, i, elementId; + + formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form'); + + if (ed.getParam("save_enablewhendirty") && !ed.isDirty()) + return; + + tinyMCE.triggerSave(); + + // Use callback instead + if (os = ed.getParam("save_onsavecallback")) { + if (ed.execCallback('save_onsavecallback', ed)) { + ed.startContent = tinymce.trim(ed.getContent({format : 'raw'})); + ed.nodeChanged(); + } + + return; + } + + if (formObj) { + ed.isNotDirty = true; + + if (formObj.onsubmit == null || formObj.onsubmit() != false) + formObj.submit(); + + ed.nodeChanged(); + } else + ed.windowManager.alert("Error: No form element found."); + }, + + _cancel : function() { + var ed = this.editor, os, h = tinymce.trim(ed.startContent); + + // Use callback instead + if (os = ed.getParam("save_oncancelcallback")) { + ed.execCallback('save_oncancelcallback', ed); + return; + } + + ed.setContent(h); + ed.undoManager.clear(); + ed.nodeChanged(); + } + }); + + // Register plugin + tinymce.PluginManager.add('save', tinymce.plugins.Save); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css old mode 100755 new mode 100644 index ecdf58c7..3e2eaf34 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css @@ -1,6 +1,6 @@ -.panel_wrapper {height:85px;} -.panel_wrapper div.current {height:85px;} - -/* IE */ -* html .panel_wrapper {height:100px;} -* html .panel_wrapper div.current {height:100px;} +.panel_wrapper {height:85px;} +.panel_wrapper div.current {height:85px;} + +/* IE */ +* html .panel_wrapper {height:100px;} +* html .panel_wrapper div.current {height:100px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js old mode 100755 new mode 100644 index 1433a06a..e9b3ee81 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js @@ -1,57 +1,57 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.SearchReplacePlugin', { - init : function(ed, url) { - function open(m) { - ed.windowManager.open({ - file : url + '/searchreplace.htm', - width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), - height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), - inline : 1, - auto_focus : 0 - }, { - mode : m, - search_string : ed.selection.getContent({format : 'text'}), - plugin_url : url - }); - }; - - // Register commands - ed.addCommand('mceSearch', function() { - open('search'); - }); - - ed.addCommand('mceReplace', function() { - open('replace'); - }); - - // Register buttons - ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); - ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); - - ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); - }, - - getInfo : function() { - return { - longname : 'Search/Replace', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.SearchReplacePlugin', { + init : function(ed, url) { + function open(m) { + ed.windowManager.open({ + file : url + '/searchreplace.htm', + width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), + height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), + inline : 1, + auto_focus : 0 + }, { + mode : m, + search_string : ed.selection.getContent({format : 'text'}), + plugin_url : url + }); + }; + + // Register commands + ed.addCommand('mceSearch', function() { + open('search'); + }); + + ed.addCommand('mceReplace', function() { + open('replace'); + }); + + // Register buttons + ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); + ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); + + ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); + }, + + getInfo : function() { + return { + longname : 'Search/Replace', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js old mode 100755 new mode 100644 index c0a62432..4cc0f407 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js @@ -1,130 +1,130 @@ -tinyMCEPopup.requireLangPack(); - -var SearchReplaceDialog = { - init : function(ed) { - var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); - - this.switchMode(m); - - f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); - - // Focus input field - f[m + '_panel_searchstring'].focus(); - }, - - switchMode : function(m) { - var f, lm = this.lastMode; - - if (lm != m) { - f = document.forms[0]; - - if (lm) { - f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value; - f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked; - f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked; - f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked; - } - - mcTabs.displayTab(m + '_tab', m + '_panel'); - document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none"; - document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none"; - this.lastMode = m; - } - }, - - searchNext : function(a) { - var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0; - - // Get input - f = document.forms[0]; - s = f[m + '_panel_searchstring'].value; - b = f[m + '_panel_backwardsu'].checked; - ca = f[m + '_panel_casesensitivebox'].checked; - rs = f['replace_panel_replacestring'].value; - - if (s == '') - return; - - function fix() { - // Correct Firefox graphics glitches - r = se.getRng().cloneRange(); - ed.getDoc().execCommand('SelectAll', false, null); - se.setRng(r); - }; - - function replace() { - if (tinymce.isIE) - ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE - else - ed.getDoc().execCommand('InsertHTML', false, rs); - }; - - // IE flags - if (ca) - fl = fl | 4; - - switch (a) { - case 'all': - // Move caret to beginning of text - ed.execCommand('SelectAll'); - ed.selection.collapse(true); - - if (tinymce.isIE) { - while (r.findText(s, b ? -1 : 1, fl)) { - r.scrollIntoView(); - r.select(); - replace(); - fo = 1; - - if (b) { - r.moveEnd("character", -(rs.length)); // Otherwise will loop forever - } - } - - tinyMCEPopup.storeSelection(); - } else { - while (w.find(s, ca, b, false, false, false, false)) { - replace(); - fo = 1; - } - } - - if (fo) - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced')); - else - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - - return; - - case 'current': - if (!ed.selection.isCollapsed()) - replace(); - - break; - } - - se.collapse(b); - r = se.getRng(); - - // Whats the point - if (!s) - return; - - if (tinymce.isIE) { - if (r.findText(s, b ? -1 : 1, fl)) { - r.scrollIntoView(); - r.select(); - } else - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - - tinyMCEPopup.storeSelection(); - } else { - if (!w.find(s, ca, b, false, false, false, false)) - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - else - fix(); - } - } -}; - -tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog); +tinyMCEPopup.requireLangPack(); + +var SearchReplaceDialog = { + init : function(ed) { + var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); + + this.switchMode(m); + + f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); + + // Focus input field + f[m + '_panel_searchstring'].focus(); + }, + + switchMode : function(m) { + var f, lm = this.lastMode; + + if (lm != m) { + f = document.forms[0]; + + if (lm) { + f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value; + f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked; + f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked; + f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked; + } + + mcTabs.displayTab(m + '_tab', m + '_panel'); + document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none"; + document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none"; + this.lastMode = m; + } + }, + + searchNext : function(a) { + var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0; + + // Get input + f = document.forms[0]; + s = f[m + '_panel_searchstring'].value; + b = f[m + '_panel_backwardsu'].checked; + ca = f[m + '_panel_casesensitivebox'].checked; + rs = f['replace_panel_replacestring'].value; + + if (s == '') + return; + + function fix() { + // Correct Firefox graphics glitches + r = se.getRng().cloneRange(); + ed.getDoc().execCommand('SelectAll', false, null); + se.setRng(r); + }; + + function replace() { + if (tinymce.isIE) + ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE + else + ed.getDoc().execCommand('InsertHTML', false, rs); + }; + + // IE flags + if (ca) + fl = fl | 4; + + switch (a) { + case 'all': + // Move caret to beginning of text + ed.execCommand('SelectAll'); + ed.selection.collapse(true); + + if (tinymce.isIE) { + while (r.findText(s, b ? -1 : 1, fl)) { + r.scrollIntoView(); + r.select(); + replace(); + fo = 1; + + if (b) { + r.moveEnd("character", -(rs.length)); // Otherwise will loop forever + } + } + + tinyMCEPopup.storeSelection(); + } else { + while (w.find(s, ca, b, false, false, false, false)) { + replace(); + fo = 1; + } + } + + if (fo) + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced')); + else + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + + return; + + case 'current': + if (!ed.selection.isCollapsed()) + replace(); + + break; + } + + se.collapse(b); + r = se.getRng(); + + // Whats the point + if (!s) + return; + + if (tinymce.isIE) { + if (r.findText(s, b ? -1 : 1, fl)) { + r.scrollIntoView(); + r.select(); + } else + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + + tinyMCEPopup.storeSelection(); + } else { + if (!w.find(s, ca, b, false, false, false, false)) + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + else + fix(); + } + } +}; + +tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js old mode 100755 new mode 100644 index 370959af..3dd3453d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js @@ -1,16 +1,16 @@ -tinyMCE.addI18n('en.searchreplace_dlg',{ -searchnext_desc:"Find again", -notfound:"The search has been completed. The search string could not be found.", -search_title:"Find", -replace_title:"Find/Replace", -allreplaced:"All occurrences of the search string were replaced.", -findwhat:"Find what", -replacewith:"Replace with", -direction:"Direction", -up:"Up", -down:"Down", -mcase:"Match case", -findnext:"Find next", -replace:"Replace", -replaceall:"Replace all" +tinyMCE.addI18n('en.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm old mode 100755 new mode 100644 index d0424cfc..243a4bc2 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm @@ -1,99 +1,99 @@ - - - - {#searchreplace_dlg.replace_title} - - - - - - - -
    - - -
    -
    - - - - - - - - - - - -
    - - - - - - - - -
    -
    - - - - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - -
    - - - - - - - - -
    -
    - - - - - -
    -
    -
    - -
    - -
    - - - - -
    -
    - - + + + + {#searchreplace_dlg.replace_title} + + + + + + + +
    + + +
    +
    + + + + + + + + + + + +
    + + + + + + + + +
    +
    + + + + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + +
    + + + + + + + + +
    +
    + + + + + +
    +
    +
    + +
    + +
    + + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/css/content.css b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/css/content.css old mode 100755 new mode 100644 index 24efa021..656ce1ee --- a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/css/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/css/content.css @@ -1 +1 @@ -.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} +.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js old mode 100755 new mode 100644 index a924faba..8fb7431e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js @@ -1,415 +1,415 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM; - - tinymce.create('tinymce.plugins.SpellcheckerPlugin', { - getInfo : function() { - return { - longname : 'Spellchecker', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - init : function(ed, url) { - var t = this, cm; - - t.url = url; - t.editor = ed; - t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}"); - - if (t.rpcUrl == '{backend}') { - // Sniff if the browser supports native spellchecking (Don't know of a better way) - if (tinymce.isIE) - return; - - t.hasSupport = true; - - // Disable the context menu when spellchecking is active - ed.onContextMenu.addToTop(function(ed, e) { - if (t.active) - return false; - }); - } - - // Register commands - ed.addCommand('mceSpellCheck', function() { - if (t.rpcUrl == '{backend}') { - // Enable/disable native spellchecker - t.editor.getBody().spellcheck = t.active = !t.active; - return; - } - - if (!t.active) { - ed.setProgressState(1); - t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) { - if (r.length > 0) { - t.active = 1; - t._markWords(r); - ed.setProgressState(0); - ed.nodeChanged(); - } else { - ed.setProgressState(0); - - if (ed.getParam('spellchecker_report_no_misspellings', true)) - ed.windowManager.alert('spellchecker.no_mpell'); - } - }); - } else - t._done(); - }); - - ed.onInit.add(function() { - if (ed.settings.content_css !== false) - ed.dom.loadCSS(url + '/css/content.css'); - }); - - ed.onClick.add(t._showMenu, t); - ed.onContextMenu.add(t._showMenu, t); - ed.onBeforeGetContent.add(function() { - if (t.active) - t._removeWords(); - }); - - ed.onNodeChange.add(function(ed, cm) { - cm.setActive('spellchecker', t.active); - }); - - ed.onSetContent.add(function() { - t._done(); - }); - - ed.onBeforeGetContent.add(function() { - t._done(); - }); - - ed.onBeforeExecCommand.add(function(ed, cmd) { - if (cmd == 'mceFullScreen') - t._done(); - }); - - // Find selected language - t.languages = {}; - each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) { - if (k.indexOf('+') === 0) { - k = k.substring(1); - t.selectedLang = v; - } - - t.languages[k] = v; - }); - }, - - createControl : function(n, cm) { - var t = this, c, ed = t.editor; - - if (n == 'spellchecker') { - // Use basic button if we use the native spellchecker - if (t.rpcUrl == '{backend}') { - // Create simple toggle button if we have native support - if (t.hasSupport) - c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); - - return c; - } - - c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); - - c.onRenderMenu.add(function(c, m) { - m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); - each(t.languages, function(v, k) { - var o = {icon : 1}, mi; - - o.onclick = function() { - mi.setSelected(1); - t.selectedItem.setSelected(0); - t.selectedItem = mi; - t.selectedLang = v; - }; - - o.title = k; - mi = m.add(o); - mi.setSelected(v == t.selectedLang); - - if (v == t.selectedLang) - t.selectedItem = mi; - }) - }); - - return c; - } - }, - - // Internal functions - - _walk : function(n, f) { - var d = this.editor.getDoc(), w; - - if (d.createTreeWalker) { - w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); - - while ((n = w.nextNode()) != null) - f.call(this, n); - } else - tinymce.walk(n, f, 'childNodes'); - }, - - _getSeparators : function() { - var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}\u201d\u201c'); - - // Build word separator regexp - for (i=0; i$1$2'); - v = v.replace(r3, '$1$2'); - - dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n); - } - } - }); - - se.moveToBookmark(b); - }, - - _showMenu : function(ed, e) { - var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()); - - if (!m) { - p1 = DOM.getPos(ed.getContentAreaContainer()); - //p2 = DOM.getPos(ed.getContainer()); - - m = ed.controlManager.createDropMenu('spellcheckermenu', { - offset_x : p1.x, - offset_y : p1.y, - 'class' : 'mceNoIcons' - }); - - t._menu = m; - } - - if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) { - m.removeAll(); - m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1); - - t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) { - var ignoreRpc; - - m.removeAll(); - - if (r.length > 0) { - m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); - each(r, function(v) { - m.add({title : v, onclick : function() { - dom.replace(ed.getDoc().createTextNode(v), e.target); - t._checkDone(); - }}); - }); - - m.addSeparator(); - } else - m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); - - ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", ''); - m.add({ - title : 'spellchecker.ignore_word', - onclick : function() { - var word = e.target.innerHTML; - - dom.remove(e.target, 1); - t._checkDone(); - - // tell the server if we need to - if (ignoreRpc) { - ed.setProgressState(1); - t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) { - ed.setProgressState(0); - }); - } - } - }); - - m.add({ - title : 'spellchecker.ignore_words', - onclick : function() { - var word = e.target.innerHTML; - - t._removeWords(dom.decode(word)); - t._checkDone(); - - // tell the server if we need to - if (ignoreRpc) { - ed.setProgressState(1); - t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) { - ed.setProgressState(0); - }); - } - } - }); - - - if (t.editor.getParam("spellchecker_enable_learn_rpc")) { - m.add({ - title : 'spellchecker.learn_word', - onclick : function() { - var word = e.target.innerHTML; - - dom.remove(e.target, 1); - t._checkDone(); - - ed.setProgressState(1); - t._sendRPC('learnWord', [t.selectedLang, word], function(r) { - ed.setProgressState(0); - }); - } - }); - } - - m.update(); - }); - - ed.selection.select(e.target); - p1 = dom.getPos(e.target); - m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y); - - return tinymce.dom.Event.cancel(e); - } else - m.hideMenu(); - }, - - _checkDone : function() { - var t = this, ed = t.editor, dom = ed.dom, o; - - each(dom.select('span'), function(n) { - if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) { - o = true; - return false; - } - }); - - if (!o) - t._done(); - }, - - _done : function() { - var t = this, la = t.active; - - if (t.active) { - t.active = 0; - t._removeWords(); - - if (t._menu) - t._menu.hideMenu(); - - if (la) - t.editor.nodeChanged(); - } - }, - - _sendRPC : function(m, p, cb) { - var t = this; - - JSONRequest.sendRPC({ - url : t.rpcUrl, - method : m, - params : p, - success : cb, - error : function(e, x) { - t.editor.setProgressState(0); - t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText)); - } - }); - } - }); - - // Register plugin - tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin); -})(); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM; + + tinymce.create('tinymce.plugins.SpellcheckerPlugin', { + getInfo : function() { + return { + longname : 'Spellchecker', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + init : function(ed, url) { + var t = this, cm; + + t.url = url; + t.editor = ed; + t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}"); + + if (t.rpcUrl == '{backend}') { + // Sniff if the browser supports native spellchecking (Don't know of a better way) + if (tinymce.isIE) + return; + + t.hasSupport = true; + + // Disable the context menu when spellchecking is active + ed.onContextMenu.addToTop(function(ed, e) { + if (t.active) + return false; + }); + } + + // Register commands + ed.addCommand('mceSpellCheck', function() { + if (t.rpcUrl == '{backend}') { + // Enable/disable native spellchecker + t.editor.getBody().spellcheck = t.active = !t.active; + return; + } + + if (!t.active) { + ed.setProgressState(1); + t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) { + if (r.length > 0) { + t.active = 1; + t._markWords(r); + ed.setProgressState(0); + ed.nodeChanged(); + } else { + ed.setProgressState(0); + + if (ed.getParam('spellchecker_report_no_misspellings', true)) + ed.windowManager.alert('spellchecker.no_mpell'); + } + }); + } else + t._done(); + }); + + ed.onInit.add(function() { + if (ed.settings.content_css !== false) + ed.dom.loadCSS(url + '/css/content.css'); + }); + + ed.onClick.add(t._showMenu, t); + ed.onContextMenu.add(t._showMenu, t); + ed.onBeforeGetContent.add(function() { + if (t.active) + t._removeWords(); + }); + + ed.onNodeChange.add(function(ed, cm) { + cm.setActive('spellchecker', t.active); + }); + + ed.onSetContent.add(function() { + t._done(); + }); + + ed.onBeforeGetContent.add(function() { + t._done(); + }); + + ed.onBeforeExecCommand.add(function(ed, cmd) { + if (cmd == 'mceFullScreen') + t._done(); + }); + + // Find selected language + t.languages = {}; + each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) { + if (k.indexOf('+') === 0) { + k = k.substring(1); + t.selectedLang = v; + } + + t.languages[k] = v; + }); + }, + + createControl : function(n, cm) { + var t = this, c, ed = t.editor; + + if (n == 'spellchecker') { + // Use basic button if we use the native spellchecker + if (t.rpcUrl == '{backend}') { + // Create simple toggle button if we have native support + if (t.hasSupport) + c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); + + return c; + } + + c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); + + c.onRenderMenu.add(function(c, m) { + m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + each(t.languages, function(v, k) { + var o = {icon : 1}, mi; + + o.onclick = function() { + mi.setSelected(1); + t.selectedItem.setSelected(0); + t.selectedItem = mi; + t.selectedLang = v; + }; + + o.title = k; + mi = m.add(o); + mi.setSelected(v == t.selectedLang); + + if (v == t.selectedLang) + t.selectedItem = mi; + }) + }); + + return c; + } + }, + + // Internal functions + + _walk : function(n, f) { + var d = this.editor.getDoc(), w; + + if (d.createTreeWalker) { + w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); + + while ((n = w.nextNode()) != null) + f.call(this, n); + } else + tinymce.walk(n, f, 'childNodes'); + }, + + _getSeparators : function() { + var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}\u201d\u201c'); + + // Build word separator regexp + for (i=0; i$1$2'); + v = v.replace(r3, '$1$2'); + + dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n); + } + } + }); + + se.moveToBookmark(b); + }, + + _showMenu : function(ed, e) { + var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()); + + if (!m) { + p1 = DOM.getPos(ed.getContentAreaContainer()); + //p2 = DOM.getPos(ed.getContainer()); + + m = ed.controlManager.createDropMenu('spellcheckermenu', { + offset_x : p1.x, + offset_y : p1.y, + 'class' : 'mceNoIcons' + }); + + t._menu = m; + } + + if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) { + m.removeAll(); + m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + + t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) { + var ignoreRpc; + + m.removeAll(); + + if (r.length > 0) { + m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + each(r, function(v) { + m.add({title : v, onclick : function() { + dom.replace(ed.getDoc().createTextNode(v), e.target); + t._checkDone(); + }}); + }); + + m.addSeparator(); + } else + m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + + ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", ''); + m.add({ + title : 'spellchecker.ignore_word', + onclick : function() { + var word = e.target.innerHTML; + + dom.remove(e.target, 1); + t._checkDone(); + + // tell the server if we need to + if (ignoreRpc) { + ed.setProgressState(1); + t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + } + }); + + m.add({ + title : 'spellchecker.ignore_words', + onclick : function() { + var word = e.target.innerHTML; + + t._removeWords(dom.decode(word)); + t._checkDone(); + + // tell the server if we need to + if (ignoreRpc) { + ed.setProgressState(1); + t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + } + }); + + + if (t.editor.getParam("spellchecker_enable_learn_rpc")) { + m.add({ + title : 'spellchecker.learn_word', + onclick : function() { + var word = e.target.innerHTML; + + dom.remove(e.target, 1); + t._checkDone(); + + ed.setProgressState(1); + t._sendRPC('learnWord', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + }); + } + + m.update(); + }); + + ed.selection.select(e.target); + p1 = dom.getPos(e.target); + m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y); + + return tinymce.dom.Event.cancel(e); + } else + m.hideMenu(); + }, + + _checkDone : function() { + var t = this, ed = t.editor, dom = ed.dom, o; + + each(dom.select('span'), function(n) { + if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) { + o = true; + return false; + } + }); + + if (!o) + t._done(); + }, + + _done : function() { + var t = this, la = t.active; + + if (t.active) { + t.active = 0; + t._removeWords(); + + if (t._menu) + t._menu.hideMenu(); + + if (la) + t.editor.nodeChanged(); + } + }, + + _sendRPC : function(m, p, cb) { + var t = this; + + JSONRequest.sendRPC({ + url : t.rpcUrl, + method : m, + params : p, + success : cb, + error : function(e, x) { + t.editor.setProgressState(0); + t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText)); + } + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin); +})(); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif b/src/lab/final-build/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/css/props.css b/src/lab/final-build/jscripts/tiny_mce/plugins/style/css/props.css old mode 100755 new mode 100644 index eb1f2649..5550b093 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/style/css/props.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/style/css/props.css @@ -1,13 +1,13 @@ -#text_font {width:250px;} -#text_size {width:70px;} -.mceAddSelectValue {background:#DDD;} -select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} -#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} -#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} -#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} -.panel_wrapper div.current {padding-top:10px;height:230px;} -.delim {border-left:1px solid gray;} -.tdelim {border-bottom:1px solid gray;} -#block_display {width:145px;} -#list_type {width:115px;} -.disabled {background:#EEE;} +#text_font {width:250px;} +#text_size {width:70px;} +.mceAddSelectValue {background:#DDD;} +select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} +#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} +#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} +#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} +.panel_wrapper div.current {padding-top:10px;height:230px;} +.delim {border-left:1px solid gray;} +.tdelim {border-bottom:1px solid gray;} +#block_display {width:145px;} +#list_type {width:115px;} +.disabled {background:#EEE;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin_src.js old mode 100755 new mode 100644 index 5f7755f1..c09d5e81 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/style/editor_plugin_src.js @@ -1,55 +1,55 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.StylePlugin', { - init : function(ed, url) { - // Register commands - ed.addCommand('mceStyleProps', function() { - ed.windowManager.open({ - file : url + '/props.htm', - width : 480 + parseInt(ed.getLang('style.delta_width', 0)), - height : 320 + parseInt(ed.getLang('style.delta_height', 0)), - inline : 1 - }, { - plugin_url : url, - style_text : ed.selection.getNode().style.cssText - }); - }); - - ed.addCommand('mceSetElementStyle', function(ui, v) { - if (e = ed.selection.getNode()) { - ed.dom.setAttrib(e, 'style', v); - ed.execCommand('mceRepaint'); - } - }); - - ed.onNodeChange.add(function(ed, cm, n) { - cm.setDisabled('styleprops', n.nodeName === 'BODY'); - }); - - // Register buttons - ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); - }, - - getInfo : function() { - return { - longname : 'Style', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.StylePlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceStyleProps', function() { + ed.windowManager.open({ + file : url + '/props.htm', + width : 480 + parseInt(ed.getLang('style.delta_width', 0)), + height : 320 + parseInt(ed.getLang('style.delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + style_text : ed.selection.getNode().style.cssText + }); + }); + + ed.addCommand('mceSetElementStyle', function(ui, v) { + if (e = ed.selection.getNode()) { + ed.dom.setAttrib(e, 'style', v); + ed.execCommand('mceRepaint'); + } + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setDisabled('styleprops', n.nodeName === 'BODY'); + }); + + // Register buttons + ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); + }, + + getInfo : function() { + return { + longname : 'Style', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/js/props.js b/src/lab/final-build/jscripts/tiny_mce/plugins/style/js/props.js old mode 100755 new mode 100644 index a8dd93de..1e73806d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/style/js/props.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/style/js/props.js @@ -1,641 +1,641 @@ -tinyMCEPopup.requireLangPack(); - -var defaultFonts = "" + - "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Courier New, Courier, mono=Courier New, Courier, mono;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + - "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + - "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; - -var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; -var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; -var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; -var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; -var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; -var defaultTextStyle = "normal;italic;oblique"; -var defaultVariant = "normal;small-caps"; -var defaultLineHeight = "normal"; -var defaultAttachment = "fixed;scroll"; -var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; -var defaultPosH = "left;center;right"; -var defaultPosV = "top;center;bottom"; -var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; -var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; -var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; -var defaultBorderWidth = "thin;medium;thick"; -var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; - -function init() { - var ce = document.getElementById('container'), h; - - ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); - - h = getBrowserHTML('background_image_browser','background_image','image','advimage'); - document.getElementById("background_image_browser").innerHTML = h; - - document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); - document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); - document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); - document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); - document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); - document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); - - fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); - fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); - fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); - fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); - fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); - fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); - fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); - fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); - fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); - - fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); - fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); - - fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); - fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); - fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); - fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); - fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); - fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); - fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); - - fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); - fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); - fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); - - fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); - - fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); - fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); - - fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); - fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); - - fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); - - fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); - - TinyMCE_EditableSelects.init(); - setupFormData(); - showDisabledControls(); -} - -function setupFormData() { - var ce = document.getElementById('container'), f = document.forms[0], s, b, i; - - // Setup text fields - - selectByValue(f, 'text_font', ce.style.fontFamily, true, true); - selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); - selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); - selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); - selectByValue(f, 'text_style', ce.style.fontStyle, true, true); - selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); - selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); - selectByValue(f, 'text_case', ce.style.textTransform, true, true); - selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); - f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); - updateColor('text_color_pick', 'text_color'); - f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); - f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); - f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); - f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); - - // Setup background fields - - f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); - updateColor('background_color_pick', 'background_color'); - f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); - selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); - selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); - selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); - selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); - selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); - - // Setup block fields - - selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); - selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); - selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); - selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); - selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); - selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); - f.block_text_indent.value = getNum(ce.style.textIndent); - selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); - selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); - selectByValue(f, 'block_display', ce.style.display, true, true); - - // Setup box fields - - f.box_width.value = getNum(ce.style.width); - selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); - - f.box_height.value = getNum(ce.style.height); - selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); - - if (tinymce.isGecko) - selectByValue(f, 'box_float', ce.style.cssFloat, true, true); - else - selectByValue(f, 'box_float', ce.style.styleFloat, true, true); - - selectByValue(f, 'box_clear', ce.style.clear, true, true); - - setupBox(f, ce, 'box_padding', 'padding', ''); - setupBox(f, ce, 'box_margin', 'margin', ''); - - // Setup border fields - - setupBox(f, ce, 'border_style', 'border', 'Style'); - setupBox(f, ce, 'border_width', 'border', 'Width'); - setupBox(f, ce, 'border_color', 'border', 'Color'); - - updateColor('border_color_top_pick', 'border_color_top'); - updateColor('border_color_right_pick', 'border_color_right'); - updateColor('border_color_bottom_pick', 'border_color_bottom'); - updateColor('border_color_left_pick', 'border_color_left'); - - f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); - f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); - f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); - f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); - - // Setup list fields - - selectByValue(f, 'list_type', ce.style.listStyleType, true, true); - selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); - f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - - // Setup box fields - - selectByValue(f, 'positioning_type', ce.style.position, true, true); - selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); - selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); - f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; - - f.positioning_width.value = getNum(ce.style.width); - selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); - - f.positioning_height.value = getNum(ce.style.height); - selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); - - setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); - - s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); - s = s.replace(/,/g, ' '); - - if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = getNum(getVal(s, 1)); - selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); - f.positioning_clip_bottom.value = getNum(getVal(s, 2)); - selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); - f.positioning_clip_left.value = getNum(getVal(s, 3)); - selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); - } else { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; - } - -// setupBox(f, ce, '', 'border', 'Color'); -} - -function getMeasurement(s) { - return s.replace(/^([0-9.]+)(.*)$/, "$2"); -} - -function getNum(s) { - if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) - return s.replace(/[^0-9.]/g, ''); - - return s; -} - -function inStr(s, n) { - return new RegExp(n, 'gi').test(s); -} - -function getVal(s, i) { - var a = s.split(' '); - - if (a.length > 1) - return a[i]; - - return ""; -} - -function setValue(f, n, v) { - if (f.elements[n].type == "text") - f.elements[n].value = v; - else - selectByValue(f, n, v, true, true); -} - -function setupBox(f, ce, fp, pr, sf, b) { - if (typeof(b) == "undefined") - b = ['Top', 'Right', 'Bottom', 'Left']; - - if (isSame(ce, pr, sf, b)) { - f.elements[fp + "_same"].checked = true; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - f.elements[fp + "_right"].value = ""; - f.elements[fp + "_right"].disabled = true; - f.elements[fp + "_bottom"].value = ""; - f.elements[fp + "_bottom"].disabled = true; - f.elements[fp + "_left"].value = ""; - f.elements[fp + "_left"].disabled = true; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - f.elements[fp + "_left_measurement"].disabled = true; - f.elements[fp + "_bottom_measurement"].disabled = true; - f.elements[fp + "_right_measurement"].disabled = true; - } - } else { - f.elements[fp + "_same"].checked = false; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); - f.elements[fp + "_right"].disabled = false; - - setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); - f.elements[fp + "_bottom"].disabled = false; - - setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left"].disabled = false; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); - selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); - selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left_measurement"].disabled = false; - f.elements[fp + "_bottom_measurement"].disabled = false; - f.elements[fp + "_right_measurement"].disabled = false; - } - } -} - -function isSame(e, pr, sf, b) { - var a = [], i, x; - - if (typeof(b) == "undefined") - b = ['Top', 'Right', 'Bottom', 'Left']; - - if (typeof(sf) == "undefined" || sf == null) - sf = ""; - - a[0] = e.style[pr + b[0] + sf]; - a[1] = e.style[pr + b[1] + sf]; - a[2] = e.style[pr + b[2] + sf]; - a[3] = e.style[pr + b[3] + sf]; - - for (i=0; i 0 ? s.substring(1) : s; - - if (f.text_none.checked) - s = "none"; - - ce.style.textDecoration = s; - - // Build background styles - - ce.style.backgroundColor = f.background_color.value; - ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; - ce.style.backgroundRepeat = f.background_repeat.value; - ce.style.backgroundAttachment = f.background_attachment.value; - - if (f.background_hpos.value != "") { - s = ""; - s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; - s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); - ce.style.backgroundPosition = s; - } - - // Build block styles - - ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); - ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); - ce.style.verticalAlign = f.block_vertical_alignment.value; - ce.style.textAlign = f.block_text_align.value; - ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); - ce.style.whiteSpace = f.block_whitespace.value; - ce.style.display = f.block_display.value; - - // Build box styles - - ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); - ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); - ce.style.styleFloat = f.box_float.value; - - if (tinymce.isGecko) - ce.style.cssFloat = f.box_float.value; - - ce.style.clear = f.box_clear.value; - - if (!f.box_padding_same.checked) { - ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); - ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); - ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); - } else - ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - - if (!f.box_margin_same.checked) { - ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); - ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); - ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); - } else - ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - - // Build border styles - - if (!f.border_style_same.checked) { - ce.style.borderTopStyle = f.border_style_top.value; - ce.style.borderRightStyle = f.border_style_right.value; - ce.style.borderBottomStyle = f.border_style_bottom.value; - ce.style.borderLeftStyle = f.border_style_left.value; - } else - ce.style.borderStyle = f.border_style_top.value; - - if (!f.border_width_same.checked) { - ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); - ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); - ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); - ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); - } else - ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); - - if (!f.border_color_same.checked) { - ce.style.borderTopColor = f.border_color_top.value; - ce.style.borderRightColor = f.border_color_right.value; - ce.style.borderBottomColor = f.border_color_bottom.value; - ce.style.borderLeftColor = f.border_color_left.value; - } else - ce.style.borderColor = f.border_color_top.value; - - // Build list styles - - ce.style.listStyleType = f.list_type.value; - ce.style.listStylePosition = f.list_position.value; - ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; - - // Build positioning styles - - ce.style.position = f.positioning_type.value; - ce.style.visibility = f.positioning_visibility.value; - - if (ce.style.width == "") - ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); - - if (ce.style.height == "") - ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); - - ce.style.zIndex = f.positioning_zindex.value; - ce.style.overflow = f.positioning_overflow.value; - - if (!f.positioning_placement_same.checked) { - ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); - ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); - ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); - } else { - s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.top = s; - ce.style.right = s; - ce.style.bottom = s; - ce.style.left = s; - } - - if (!f.positioning_clip_same.checked) { - s = "rect("; - s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); - s += ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } else { - s = "rect("; - t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; - s += t + " "; - s += t + " "; - s += t + " "; - s += t + ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } - - ce.style.cssText = ce.style.cssText; -} - -function isNum(s) { - return new RegExp('[0-9]+', 'g').test(s); -} - -function showDisabledControls() { - var f = document.forms, i, a; - - for (i=0; i 1) { - addSelectValue(f, s, p[0], p[1]); - - if (se) - selectByValue(f, s, p[1]); - } else { - addSelectValue(f, s, p[0], p[0]); - - if (se) - selectByValue(f, s, p[0]); - } - } -} - -function toggleSame(ce, pre) { - var el = document.forms[0].elements, i; - - if (ce.checked) { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = true; - el[pre + "_bottom"].disabled = true; - el[pre + "_left"].disabled = true; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = true; - el[pre + "_bottom_measurement"].disabled = true; - el[pre + "_left_measurement"].disabled = true; - } - } else { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = false; - el[pre + "_bottom"].disabled = false; - el[pre + "_left"].disabled = false; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = false; - el[pre + "_bottom_measurement"].disabled = false; - el[pre + "_left_measurement"].disabled = false; - } - } - - showDisabledControls(); -} - -function synch(fr, to) { - var f = document.forms[0]; - - f.elements[to].value = f.elements[fr].value; - - if (f.elements[fr + "_measurement"]) - selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); -} - -tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); + +var defaultFonts = "" + + "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Courier New, Courier, mono=Courier New, Courier, mono;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + + "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + + "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; + +var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; +var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; +var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; +var defaultTextStyle = "normal;italic;oblique"; +var defaultVariant = "normal;small-caps"; +var defaultLineHeight = "normal"; +var defaultAttachment = "fixed;scroll"; +var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; +var defaultPosH = "left;center;right"; +var defaultPosV = "top;center;bottom"; +var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; +var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; +var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; +var defaultBorderWidth = "thin;medium;thick"; +var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; + +function init() { + var ce = document.getElementById('container'), h; + + ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); + + h = getBrowserHTML('background_image_browser','background_image','image','advimage'); + document.getElementById("background_image_browser").innerHTML = h; + + document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); + document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); + document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); + document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); + document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); + document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); + + fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); + fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); + fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); + fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); + fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); + fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); + fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); + fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); + fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); + + fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); + fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); + + fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); + fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); + fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); + fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); + fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); + fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); + fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); + + fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); + fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); + fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); + + fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); + + fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); + fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); + + fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); + fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); + + fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); + + fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); + + TinyMCE_EditableSelects.init(); + setupFormData(); + showDisabledControls(); +} + +function setupFormData() { + var ce = document.getElementById('container'), f = document.forms[0], s, b, i; + + // Setup text fields + + selectByValue(f, 'text_font', ce.style.fontFamily, true, true); + selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); + selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); + selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); + selectByValue(f, 'text_style', ce.style.fontStyle, true, true); + selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); + selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); + selectByValue(f, 'text_case', ce.style.textTransform, true, true); + selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); + f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); + updateColor('text_color_pick', 'text_color'); + f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); + f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); + f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); + f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); + + // Setup background fields + + f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); + updateColor('background_color_pick', 'background_color'); + f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); + selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); + selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); + selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); + selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); + selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); + + // Setup block fields + + selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); + selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); + selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); + selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); + selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); + selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); + f.block_text_indent.value = getNum(ce.style.textIndent); + selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); + selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); + selectByValue(f, 'block_display', ce.style.display, true, true); + + // Setup box fields + + f.box_width.value = getNum(ce.style.width); + selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); + + f.box_height.value = getNum(ce.style.height); + selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); + + if (tinymce.isGecko) + selectByValue(f, 'box_float', ce.style.cssFloat, true, true); + else + selectByValue(f, 'box_float', ce.style.styleFloat, true, true); + + selectByValue(f, 'box_clear', ce.style.clear, true, true); + + setupBox(f, ce, 'box_padding', 'padding', ''); + setupBox(f, ce, 'box_margin', 'margin', ''); + + // Setup border fields + + setupBox(f, ce, 'border_style', 'border', 'Style'); + setupBox(f, ce, 'border_width', 'border', 'Width'); + setupBox(f, ce, 'border_color', 'border', 'Color'); + + updateColor('border_color_top_pick', 'border_color_top'); + updateColor('border_color_right_pick', 'border_color_right'); + updateColor('border_color_bottom_pick', 'border_color_bottom'); + updateColor('border_color_left_pick', 'border_color_left'); + + f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); + f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); + f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); + f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); + + // Setup list fields + + selectByValue(f, 'list_type', ce.style.listStyleType, true, true); + selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); + f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + + // Setup box fields + + selectByValue(f, 'positioning_type', ce.style.position, true, true); + selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); + selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); + f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; + + f.positioning_width.value = getNum(ce.style.width); + selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); + + f.positioning_height.value = getNum(ce.style.height); + selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); + + setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); + + s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); + s = s.replace(/,/g, ' '); + + if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = getNum(getVal(s, 1)); + selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); + f.positioning_clip_bottom.value = getNum(getVal(s, 2)); + selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); + f.positioning_clip_left.value = getNum(getVal(s, 3)); + selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); + } else { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; + } + +// setupBox(f, ce, '', 'border', 'Color'); +} + +function getMeasurement(s) { + return s.replace(/^([0-9.]+)(.*)$/, "$2"); +} + +function getNum(s) { + if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) + return s.replace(/[^0-9.]/g, ''); + + return s; +} + +function inStr(s, n) { + return new RegExp(n, 'gi').test(s); +} + +function getVal(s, i) { + var a = s.split(' '); + + if (a.length > 1) + return a[i]; + + return ""; +} + +function setValue(f, n, v) { + if (f.elements[n].type == "text") + f.elements[n].value = v; + else + selectByValue(f, n, v, true, true); +} + +function setupBox(f, ce, fp, pr, sf, b) { + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (isSame(ce, pr, sf, b)) { + f.elements[fp + "_same"].checked = true; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + f.elements[fp + "_right"].value = ""; + f.elements[fp + "_right"].disabled = true; + f.elements[fp + "_bottom"].value = ""; + f.elements[fp + "_bottom"].disabled = true; + f.elements[fp + "_left"].value = ""; + f.elements[fp + "_left"].disabled = true; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + f.elements[fp + "_left_measurement"].disabled = true; + f.elements[fp + "_bottom_measurement"].disabled = true; + f.elements[fp + "_right_measurement"].disabled = true; + } + } else { + f.elements[fp + "_same"].checked = false; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); + f.elements[fp + "_right"].disabled = false; + + setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); + f.elements[fp + "_bottom"].disabled = false; + + setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left"].disabled = false; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); + selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); + selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left_measurement"].disabled = false; + f.elements[fp + "_bottom_measurement"].disabled = false; + f.elements[fp + "_right_measurement"].disabled = false; + } + } +} + +function isSame(e, pr, sf, b) { + var a = [], i, x; + + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (typeof(sf) == "undefined" || sf == null) + sf = ""; + + a[0] = e.style[pr + b[0] + sf]; + a[1] = e.style[pr + b[1] + sf]; + a[2] = e.style[pr + b[2] + sf]; + a[3] = e.style[pr + b[3] + sf]; + + for (i=0; i 0 ? s.substring(1) : s; + + if (f.text_none.checked) + s = "none"; + + ce.style.textDecoration = s; + + // Build background styles + + ce.style.backgroundColor = f.background_color.value; + ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; + ce.style.backgroundRepeat = f.background_repeat.value; + ce.style.backgroundAttachment = f.background_attachment.value; + + if (f.background_hpos.value != "") { + s = ""; + s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; + s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); + ce.style.backgroundPosition = s; + } + + // Build block styles + + ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); + ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); + ce.style.verticalAlign = f.block_vertical_alignment.value; + ce.style.textAlign = f.block_text_align.value; + ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); + ce.style.whiteSpace = f.block_whitespace.value; + ce.style.display = f.block_display.value; + + // Build box styles + + ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); + ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); + ce.style.styleFloat = f.box_float.value; + + if (tinymce.isGecko) + ce.style.cssFloat = f.box_float.value; + + ce.style.clear = f.box_clear.value; + + if (!f.box_padding_same.checked) { + ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); + ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); + ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); + } else + ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + + if (!f.box_margin_same.checked) { + ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); + ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); + ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); + } else + ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + + // Build border styles + + if (!f.border_style_same.checked) { + ce.style.borderTopStyle = f.border_style_top.value; + ce.style.borderRightStyle = f.border_style_right.value; + ce.style.borderBottomStyle = f.border_style_bottom.value; + ce.style.borderLeftStyle = f.border_style_left.value; + } else + ce.style.borderStyle = f.border_style_top.value; + + if (!f.border_width_same.checked) { + ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); + ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); + ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); + } else + ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + + if (!f.border_color_same.checked) { + ce.style.borderTopColor = f.border_color_top.value; + ce.style.borderRightColor = f.border_color_right.value; + ce.style.borderBottomColor = f.border_color_bottom.value; + ce.style.borderLeftColor = f.border_color_left.value; + } else + ce.style.borderColor = f.border_color_top.value; + + // Build list styles + + ce.style.listStyleType = f.list_type.value; + ce.style.listStylePosition = f.list_position.value; + ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; + + // Build positioning styles + + ce.style.position = f.positioning_type.value; + ce.style.visibility = f.positioning_visibility.value; + + if (ce.style.width == "") + ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); + + if (ce.style.height == "") + ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); + + ce.style.zIndex = f.positioning_zindex.value; + ce.style.overflow = f.positioning_overflow.value; + + if (!f.positioning_placement_same.checked) { + ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); + ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); + ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); + } else { + s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.top = s; + ce.style.right = s; + ce.style.bottom = s; + ce.style.left = s; + } + + if (!f.positioning_clip_same.checked) { + s = "rect("; + s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); + s += ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } else { + s = "rect("; + t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; + s += t + " "; + s += t + " "; + s += t + " "; + s += t + ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } + + ce.style.cssText = ce.style.cssText; +} + +function isNum(s) { + return new RegExp('[0-9]+', 'g').test(s); +} + +function showDisabledControls() { + var f = document.forms, i, a; + + for (i=0; i 1) { + addSelectValue(f, s, p[0], p[1]); + + if (se) + selectByValue(f, s, p[1]); + } else { + addSelectValue(f, s, p[0], p[0]); + + if (se) + selectByValue(f, s, p[0]); + } + } +} + +function toggleSame(ce, pre) { + var el = document.forms[0].elements, i; + + if (ce.checked) { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = true; + el[pre + "_bottom"].disabled = true; + el[pre + "_left"].disabled = true; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = true; + el[pre + "_bottom_measurement"].disabled = true; + el[pre + "_left_measurement"].disabled = true; + } + } else { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = false; + el[pre + "_bottom"].disabled = false; + el[pre + "_left"].disabled = false; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = false; + el[pre + "_bottom_measurement"].disabled = false; + el[pre + "_left_measurement"].disabled = false; + } + } + + showDisabledControls(); +} + +function synch(fr, to) { + var f = document.forms[0]; + + f.elements[to].value = f.elements[fr].value; + + if (f.elements[fr + "_measurement"]) + selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/style/langs/en_dlg.js old mode 100755 new mode 100644 index 5026313e..d9d77627 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/style/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/style/langs/en_dlg.js @@ -1,63 +1,63 @@ -tinyMCE.addI18n('en.style_dlg',{ -title:"Edit CSS Style", -apply:"Apply", -text_tab:"Text", -background_tab:"Background", -block_tab:"Block", -box_tab:"Box", -border_tab:"Border", -list_tab:"List", -positioning_tab:"Positioning", -text_props:"Text", -text_font:"Font", -text_size:"Size", -text_weight:"Weight", -text_style:"Style", -text_variant:"Variant", -text_lineheight:"Line height", -text_case:"Case", -text_color:"Color", -text_decoration:"Decoration", -text_overline:"overline", -text_underline:"underline", -text_striketrough:"strikethrough", -text_blink:"blink", -text_none:"none", -background_color:"Background color", -background_image:"Background image", -background_repeat:"Repeat", -background_attachment:"Attachment", -background_hpos:"Horizontal position", -background_vpos:"Vertical position", -block_wordspacing:"Word spacing", -block_letterspacing:"Letter spacing", -block_vertical_alignment:"Vertical alignment", -block_text_align:"Text align", -block_text_indent:"Text indent", -block_whitespace:"Whitespace", -block_display:"Display", -box_width:"Width", -box_height:"Height", -box_float:"Float", -box_clear:"Clear", -padding:"Padding", -same:"Same for all", -top:"Top", -right:"Right", -bottom:"Bottom", -left:"Left", -margin:"Margin", -style:"Style", -width:"Width", -height:"Height", -color:"Color", -list_type:"Type", -bullet_image:"Bullet image", -position:"Position", -positioning_type:"Type", -visibility:"Visibility", -zindex:"Z-index", -overflow:"Overflow", -placement:"Placement", -clip:"Clip" +tinyMCE.addI18n('en.style_dlg',{ +title:"Edit CSS Style", +apply:"Apply", +text_tab:"Text", +background_tab:"Background", +block_tab:"Block", +box_tab:"Box", +border_tab:"Border", +list_tab:"List", +positioning_tab:"Positioning", +text_props:"Text", +text_font:"Font", +text_size:"Size", +text_weight:"Weight", +text_style:"Style", +text_variant:"Variant", +text_lineheight:"Line height", +text_case:"Case", +text_color:"Color", +text_decoration:"Decoration", +text_overline:"overline", +text_underline:"underline", +text_striketrough:"strikethrough", +text_blink:"blink", +text_none:"none", +background_color:"Background color", +background_image:"Background image", +background_repeat:"Repeat", +background_attachment:"Attachment", +background_hpos:"Horizontal position", +background_vpos:"Vertical position", +block_wordspacing:"Word spacing", +block_letterspacing:"Letter spacing", +block_vertical_alignment:"Vertical alignment", +block_text_align:"Text align", +block_text_indent:"Text indent", +block_whitespace:"Whitespace", +block_display:"Display", +box_width:"Width", +box_height:"Height", +box_float:"Float", +box_clear:"Clear", +padding:"Padding", +same:"Same for all", +top:"Top", +right:"Right", +bottom:"Bottom", +left:"Left", +margin:"Margin", +style:"Style", +width:"Width", +height:"Height", +color:"Color", +list_type:"Type", +bullet_image:"Bullet image", +position:"Position", +positioning_type:"Type", +visibility:"Visibility", +zindex:"Z-index", +overflow:"Overflow", +placement:"Placement", +clip:"Clip" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/style/props.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/style/props.htm old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js old mode 100755 new mode 100644 index c2be2f40..e0e9635e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js @@ -1,112 +1,112 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; - - tinymce.create('tinymce.plugins.TabFocusPlugin', { - init : function(ed, url) { - function tabCancel(ed, e) { - if (e.keyCode === 9) - return Event.cancel(e); - }; - - function tabHandler(ed, e) { - var x, i, f, el, v; - - function find(d) { - f = DOM.getParent(ed.id, 'form'); - el = f.elements; - - if (f) { - each(el, function(e, i) { - if (e.id == ed.id) { - x = i; - return false; - } - }); - - if (d > 0) { - for (i = x + 1; i < el.length; i++) { - if (el[i].type != 'hidden') - return el[i]; - } - } else { - for (i = x - 1; i >= 0; i--) { - if (el[i].type != 'hidden') - return el[i]; - } - } - } - - return null; - }; - - if (e.keyCode === 9) { - v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); - - if (v.length == 1) { - v[1] = v[0]; - v[0] = ':prev'; - } - - // Find element to focus - if (e.shiftKey) { - if (v[0] == ':prev') - el = find(-1); - else - el = DOM.get(v[0]); - } else { - if (v[1] == ':next') - el = find(1); - else - el = DOM.get(v[1]); - } - - if (el) { - if (ed = tinymce.get(el.id || el.name)) - ed.focus(); - else - window.setTimeout(function() {window.focus();el.focus();}, 10); - - return Event.cancel(e); - } - } - }; - - ed.onKeyUp.add(tabCancel); - - if (tinymce.isGecko) { - ed.onKeyPress.add(tabHandler); - ed.onKeyDown.add(tabCancel); - } else - ed.onKeyDown.add(tabHandler); - - ed.onInit.add(function() { - each(DOM.select('a:first,a:last', ed.getContainer()), function(n) { - Event.add(n, 'focus', function() {ed.focus();}); - }); - }); - }, - - getInfo : function() { - return { - longname : 'Tabfocus', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; + + tinymce.create('tinymce.plugins.TabFocusPlugin', { + init : function(ed, url) { + function tabCancel(ed, e) { + if (e.keyCode === 9) + return Event.cancel(e); + }; + + function tabHandler(ed, e) { + var x, i, f, el, v; + + function find(d) { + f = DOM.getParent(ed.id, 'form'); + el = f.elements; + + if (f) { + each(el, function(e, i) { + if (e.id == ed.id) { + x = i; + return false; + } + }); + + if (d > 0) { + for (i = x + 1; i < el.length; i++) { + if (el[i].type != 'hidden') + return el[i]; + } + } else { + for (i = x - 1; i >= 0; i--) { + if (el[i].type != 'hidden') + return el[i]; + } + } + } + + return null; + }; + + if (e.keyCode === 9) { + v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); + + if (v.length == 1) { + v[1] = v[0]; + v[0] = ':prev'; + } + + // Find element to focus + if (e.shiftKey) { + if (v[0] == ':prev') + el = find(-1); + else + el = DOM.get(v[0]); + } else { + if (v[1] == ':next') + el = find(1); + else + el = DOM.get(v[1]); + } + + if (el) { + if (ed = tinymce.get(el.id || el.name)) + ed.focus(); + else + window.setTimeout(function() {window.focus();el.focus();}, 10); + + return Event.cancel(e); + } + } + }; + + ed.onKeyUp.add(tabCancel); + + if (tinymce.isGecko) { + ed.onKeyPress.add(tabHandler); + ed.onKeyDown.add(tabCancel); + } else + ed.onKeyDown.add(tabHandler); + + ed.onInit.add(function() { + each(DOM.select('a:first,a:last', ed.getContainer()), function(n) { + Event.add(n, 'focus', function() {ed.focus();}); + }); + }); + }, + + getInfo : function() { + return { + longname : 'Tabfocus', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/cell.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/table/cell.htm old mode 100755 new mode 100644 index d243e1d8..af7e003e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/cell.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/cell.htm @@ -1,178 +1,178 @@ - - - - {#table_dlg.cell_title} - - - - - - - - -
    - - -
    -
    -
    - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - -
    -
    -
    - -
    -
    - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - - - - - -
     
    -
    - - - - - -
     
    -
    - - - - - -
     
    -
    -
    -
    -
    - -
    -
    - -
    - - - -
    -
    - - + + + + {#table_dlg.cell_title} + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/cell.css b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/cell.css old mode 100755 new mode 100644 index a067ecdf..a47cc1a1 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/cell.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/cell.css @@ -1,17 +1,17 @@ -/* CSS file for cell dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#class { - width: 150px; +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; } \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/row.css b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/row.css old mode 100755 new mode 100644 index 1f7755da..0e397db3 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/row.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/row.css @@ -1,25 +1,25 @@ -/* CSS file for row dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#rowtype,#align,#valign,#class,#height { - width: 150px; -} - -#height { - width: 50px; -} - -.col2 { - padding-left: 20px; -} +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/table.css b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/table.css old mode 100755 new mode 100644 index d11c3f69..8f107831 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/table.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/css/table.css @@ -1,13 +1,13 @@ -/* CSS file for table dialog in the table plugin */ - -.panel_wrapper div.current { - height: 245px; -} - -.advfield { - width: 200px; -} - -#class { - width: 150px; -} +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 245px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin_src.js old mode 100755 new mode 100644 index c2f307f0..0195e96d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/editor_plugin_src.js @@ -1,1125 +1,1125 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function(tinymce) { - var each = tinymce.each; - - /** - * Table Grid class. - */ - function TableGrid(table, dom, selection) { - var grid, startPos, endPos, selectedCell; - - buildGrid(); - selectedCell = dom.getParent(selection.getStart(), 'th,td'); - if (selectedCell) { - startPos = getPos(selectedCell); - endPos = findEndPos(); - selectedCell = getCell(startPos.x, startPos.y); - } - - function cloneNode(node, children) { - node = node.cloneNode(children); - node.removeAttribute('id'); - - return node; - } - - function buildGrid() { - var startY = 0; - - grid = []; - - each(['thead', 'tbody', 'tfoot'], function(part) { - var rows = dom.select(part + ' tr', table); - - each(rows, function(tr, y) { - y += startY; - - each(dom.select('td,th', tr), function(td, x) { - var x2, y2, rowspan, colspan; - - // Skip over existing cells produced by rowspan - if (grid[y]) { - while (grid[y][x]) - x++; - } - - // Get col/rowspan from cell - rowspan = getSpanVal(td, 'rowspan'); - colspan = getSpanVal(td, 'colspan'); - - // Fill out rowspan/colspan right and down - for (y2 = y; y2 < y + rowspan; y2++) { - if (!grid[y2]) - grid[y2] = []; - - for (x2 = x; x2 < x + colspan; x2++) { - grid[y2][x2] = { - part : part, - real : y2 == y && x2 == x, - elm : td, - rowspan : rowspan, - colspan : colspan - }; - } - } - }); - }); - - startY += rows.length; - }); - }; - - function getCell(x, y) { - var row; - - row = grid[y]; - if (row) - return row[x]; - }; - - function getSpanVal(td, name) { - return parseInt(td.getAttribute(name) || 1); - }; - - function isCellSelected(cell) { - return dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell; - }; - - function getSelectedRows() { - var rows = []; - - each(table.rows, function(row) { - each(row.cells, function(cell) { - if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { - rows.push(row); - return false; - } - }); - }); - - return rows; - }; - - function deleteTable() { - var rng = dom.createRng(); - - rng.setStartAfter(table); - rng.setEndAfter(table); - - selection.setRng(rng); - - dom.remove(table); - }; - - function cloneCell(cell) { - var formatNode; - - // Clone formats - tinymce.walk(cell, function(node) { - var curNode; - - if (node.nodeType == 3) { - each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { - node = cloneNode(node, false); - - if (!formatNode) - formatNode = curNode = node; - else if (curNode) - curNode.appendChild(node); - - curNode = node; - }); - - // Add something to the inner node - if (curNode) - curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; - - return false; - } - }, 'childNodes'); - - cell = cloneNode(cell, false); - cell.rowSpan = cell.colSpan = 1; - - if (formatNode) { - cell.appendChild(formatNode); - } else { - if (!tinymce.isIE) - cell.innerHTML = '
    '; - } - - return cell; - }; - - function cleanup() { - var rng = dom.createRng(); - - // Empty rows - each(dom.select('tr', table), function(tr) { - if (tr.cells.length == 0) - dom.remove(tr); - }); - - // Empty table - if (dom.select('tr', table).length == 0) { - rng.setStartAfter(table); - rng.setEndAfter(table); - selection.setRng(rng); - dom.remove(table); - return; - } - - // Empty header/body/footer - each(dom.select('thead,tbody,tfoot', table), function(part) { - if (part.rows.length == 0) - dom.remove(part); - }); - - // Restore selection to start position if it still exists - buildGrid(); - - // Restore the selection to the closest table position - row = grid[Math.min(grid.length - 1, startPos.y)]; - if (row) { - selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); - selection.collapse(true); - } - }; - - function fillLeftDown(x, y, rows, cols) { - var tr, x2, r, c, cell; - - tr = grid[y][x].elm.parentNode; - for (r = 1; r <= rows; r++) { - tr = dom.getNext(tr, 'tr'); - - if (tr) { - // Loop left to find real cell - for (x2 = x; x2 >= 0; x2--) { - cell = grid[y + r][x2].elm; - - if (cell.parentNode == tr) { - // Append clones after - for (c = 1; c <= cols; c++) - dom.insertAfter(cloneCell(cell), cell); - - break; - } - } - - if (x2 == -1) { - // Insert nodes before first cell - for (c = 1; c <= cols; c++) - tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); - } - } - } - }; - - function split() { - each(grid, function(row, y) { - each(row, function(cell, x) { - var colSpan, rowSpan, newCell, i; - - if (isCellSelected(cell)) { - cell = cell.elm; - colSpan = getSpanVal(cell, 'colspan'); - rowSpan = getSpanVal(cell, 'rowspan'); - - if (colSpan > 1 || rowSpan > 1) { - cell.colSpan = cell.rowSpan = 1; - - // Insert cells right - for (i = 0; i < colSpan - 1; i++) - dom.insertAfter(cloneCell(cell), cell); - - fillLeftDown(x, y, rowSpan - 1, colSpan); - } - } - }); - }); - }; - - function merge(cell, cols, rows) { - var startX, startY, endX, endY, x, y, startCell, endCell, cell, children; - - // Use specified cell and cols/rows - if (cell) { - pos = getPos(cell); - startX = pos.x; - startY = pos.y; - endX = startX + (cols - 1); - endY = startY + (rows - 1); - } else { - // Use selection - startX = startPos.x; - startY = startPos.y; - endX = endPos.x; - endY = endPos.y; - } - - // Find start/end cells - startCell = getCell(startX, startY); - endCell = getCell(endX, endY); - - // Check if the cells exists and if they are of the same part for example tbody = tbody - if (startCell && endCell && startCell.part == endCell.part) { - // Split and rebuild grid - split(); - buildGrid(); - - // Set row/col span to start cell - startCell = getCell(startX, startY).elm; - startCell.colSpan = (endX - startX) + 1; - startCell.rowSpan = (endY - startY) + 1; - - // Remove other cells and add it's contents to the start cell - for (y = startY; y <= endY; y++) { - for (x = startX; x <= endX; x++) { - cell = grid[y][x].elm; - - if (cell != startCell) { - // Move children to startCell - children = tinymce.grep(cell.childNodes); - each(children, function(node, i) { - // Jump over last BR element - if (node.nodeName != 'BR' || i != children.length - 1) - startCell.appendChild(node); - }); - - // Remove cell - dom.remove(cell); - } - } - } - - // Remove empty rows etc and restore caret location - cleanup(); - } - }; - - function insertRow(before) { - var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell; - - // Find first/last row - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell)) { - cell = cell.elm; - rowElm = cell.parentNode; - newRow = cloneNode(rowElm, false); - posY = y; - - if (before) - return false; - } - }); - - if (before) - return !posY; - }); - - for (x = 0; x < grid[0].length; x++) { - cell = grid[posY][x].elm; - - if (cell != lastCell) { - if (!before) { - rowSpan = getSpanVal(cell, 'rowspan'); - if (rowSpan > 1) { - cell.rowSpan = rowSpan + 1; - continue; - } - } else { - // Check if cell above can be expanded - if (posY > 0 && grid[posY - 1][x]) { - otherCell = grid[posY - 1][x].elm; - rowSpan = getSpanVal(otherCell, 'rowspan'); - if (rowSpan > 1) { - otherCell.rowSpan = rowSpan + 1; - continue; - } - } - } - - // Insert new cell into new row - newCell = cloneCell(cell) - newCell.colSpan = cell.colSpan; - newRow.appendChild(newCell); - - lastCell = cell; - } - } - - if (newRow.hasChildNodes()) { - if (!before) - dom.insertAfter(newRow, rowElm); - else - rowElm.parentNode.insertBefore(newRow, rowElm); - } - }; - - function insertCol(before) { - var posX, lastCell; - - // Find first/last column - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell)) { - posX = x; - - if (before) - return false; - } - }); - - if (before) - return !posX; - }); - - each(grid, function(row, y) { - var cell = row[posX].elm, rowSpan, colSpan; - - if (cell != lastCell) { - colSpan = getSpanVal(cell, 'colspan'); - rowSpan = getSpanVal(cell, 'rowspan'); - - if (colSpan == 1) { - if (!before) { - dom.insertAfter(cloneCell(cell), cell); - fillLeftDown(posX, y, rowSpan - 1, colSpan); - } else { - cell.parentNode.insertBefore(cloneCell(cell), cell); - fillLeftDown(posX, y, rowSpan - 1, colSpan); - } - } else - cell.colSpan++; - - lastCell = cell; - } - }); - }; - - function deleteCols() { - var cols = []; - - // Get selected column indexes - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { - each(grid, function(row) { - var cell = row[x].elm, colSpan; - - colSpan = getSpanVal(cell, 'colspan'); - - if (colSpan > 1) - cell.colSpan = colSpan - 1; - else - dom.remove(cell); - }); - - cols.push(x); - } - }); - }); - - cleanup(); - }; - - function deleteRows() { - var rows; - - function deleteRow(tr) { - var nextTr, pos, lastCell; - - nextTr = dom.getNext(tr, 'tr'); - - // Move down row spanned cells - each(tr.cells, function(cell) { - var rowSpan = getSpanVal(cell, 'rowspan'); - - if (rowSpan > 1) { - cell.rowSpan = rowSpan - 1; - pos = getPos(cell); - fillLeftDown(pos.x, pos.y, 1, 1); - } - }); - - // Delete cells - pos = getPos(tr.cells[0]); - each(grid[pos.y], function(cell) { - var rowSpan; - - cell = cell.elm; - - if (cell != lastCell) { - rowSpan = getSpanVal(cell, 'rowspan'); - - if (rowSpan <= 1) - dom.remove(cell); - else - cell.rowSpan = rowSpan - 1; - - lastCell = cell; - } - }); - }; - - // Get selected rows and move selection out of scope - rows = getSelectedRows(); - - // Delete all selected rows - each(rows.reverse(), function(tr) { - deleteRow(tr); - }); - - cleanup(); - }; - - function cutRows() { - var rows = getSelectedRows(); - - dom.remove(rows); - cleanup(); - - return rows; - }; - - function copyRows() { - var rows = getSelectedRows(); - - each(rows, function(row, i) { - rows[i] = cloneNode(row, true); - }); - - return rows; - }; - - function pasteRows(rows, before) { - var selectedRows = getSelectedRows(), - targetRow = selectedRows[before ? 0 : selectedRows.length - 1], - targetCellCount = targetRow.cells.length; - - // Calc target cell count - each(grid, function(row) { - var match; - - targetCellCount = 0; - each(row, function(cell, x) { - if (cell.real) - targetCellCount += cell.colspan; - - if (cell.elm.parentNode == targetRow) - match = 1; - }); - - if (match) - return false; - }); - - if (!before) - rows.reverse(); - - each(rows, function(row) { - var cellCount = row.cells.length, cell; - - // Remove col/rowspans - for (i = 0; i < cellCount; i++) { - cell = row.cells[i]; - cell.colSpan = cell.rowSpan = 1; - } - - // Needs more cells - for (i = cellCount; i < targetCellCount; i++) - row.appendChild(cloneCell(row.cells[cellCount - 1])); - - // Needs less cells - for (i = targetCellCount; i < cellCount; i++) - dom.remove(row.cells[i]); - - // Add before/after - if (before) - targetRow.parentNode.insertBefore(row, targetRow); - else - dom.insertAfter(row, targetRow); - }); - }; - - function getPos(target) { - var pos; - - each(grid, function(row, y) { - each(row, function(cell, x) { - if (cell.elm == target) { - pos = {x : x, y : y}; - return false; - } - }); - - return !pos; - }); - - return pos; - }; - - function setStartCell(cell) { - startPos = getPos(cell); - }; - - function findEndPos() { - var pos, maxX, maxY; - - maxX = maxY = 0; - - each(grid, function(row, y) { - each(row, function(cell, x) { - var colSpan, rowSpan; - - if (isCellSelected(cell)) { - cell = grid[y][x]; - - if (x > maxX) - maxX = x; - - if (y > maxY) - maxY = y; - - if (cell.real) { - colSpan = cell.colspan - 1; - rowSpan = cell.rowspan - 1; - - if (colSpan) { - if (x + colSpan > maxX) - maxX = x + colSpan; - } - - if (rowSpan) { - if (y + rowSpan > maxY) - maxY = y + rowSpan; - } - } - } - }); - }); - - return {x : maxX, y : maxY}; - }; - - function setEndCell(cell) { - var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; - - endPos = getPos(cell); - - if (startPos && endPos) { - // Get start/end positions - startX = Math.min(startPos.x, endPos.x); - startY = Math.min(startPos.y, endPos.y); - endX = Math.max(startPos.x, endPos.x); - endY = Math.max(startPos.y, endPos.y); - - // Expand end positon to include spans - maxX = endX; - maxY = endY; - - // Expand startX - for (y = startY; y <= maxY; y++) { - cell = grid[y][startX]; - - if (!cell.real) { - if (startX - (cell.colspan - 1) < startX) - startX -= cell.colspan - 1; - } - } - - // Expand startY - for (x = startX; x <= maxX; x++) { - cell = grid[startY][x]; - - if (!cell.real) { - if (startY - (cell.rowspan - 1) < startY) - startY -= cell.rowspan - 1; - } - } - - // Find max X, Y - for (y = startY; y <= endY; y++) { - for (x = startX; x <= endX; x++) { - cell = grid[y][x]; - - if (cell.real) { - colSpan = cell.colspan - 1; - rowSpan = cell.rowspan - 1; - - if (colSpan) { - if (x + colSpan > maxX) - maxX = x + colSpan; - } - - if (rowSpan) { - if (y + rowSpan > maxY) - maxY = y + rowSpan; - } - } - } - } - - // Remove current selection - dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); - - // Add new selection - for (y = startY; y <= maxY; y++) { - for (x = startX; x <= maxX; x++) - dom.addClass(grid[y][x].elm, 'mceSelected'); - } - } - }; - - // Expose to public - tinymce.extend(this, { - deleteTable : deleteTable, - split : split, - merge : merge, - insertRow : insertRow, - insertCol : insertCol, - deleteCols : deleteCols, - deleteRows : deleteRows, - cutRows : cutRows, - copyRows : copyRows, - pasteRows : pasteRows, - getPos : getPos, - setStartCell : setStartCell, - setEndCell : setEndCell - }); - }; - - tinymce.create('tinymce.plugins.TablePlugin', { - init : function(ed, url) { - var winMan, clipboardRows; - - function createTableGrid(node) { - var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); - - if (tblElm) - return new TableGrid(tblElm, ed.dom, selection); - }; - - function cleanup() { - // Restore selection possibilities - ed.getBody().style.webkitUserSelect = ''; - ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); - }; - - // Register buttons - each([ - ['table', 'table.desc', 'mceInsertTable', true], - ['delete_table', 'table.del', 'mceTableDelete'], - ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], - ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], - ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], - ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], - ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], - ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], - ['row_props', 'table.row_desc', 'mceTableRowProps', true], - ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], - ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], - ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] - ], function(c) { - ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); - }); - - // Select whole table is a table border is clicked - if (!tinymce.isIE) { - ed.onClick.add(function(ed, e) { - e = e.target; - - if (e.nodeName === 'TABLE') - ed.selection.select(e); - }); - } - - // Handle node change updates - ed.onNodeChange.add(function(ed, cm, n) { - var p; - - n = ed.selection.getStart(); - p = ed.dom.getParent(n, 'td,th,caption'); - cm.setActive('table', n.nodeName === 'TABLE' || !!p); - - // Disable table tools if we are in caption - if (p && p.nodeName === 'CAPTION') - p = 0; - - cm.setDisabled('delete_table', !p); - cm.setDisabled('delete_col', !p); - cm.setDisabled('delete_table', !p); - cm.setDisabled('delete_row', !p); - cm.setDisabled('col_after', !p); - cm.setDisabled('col_before', !p); - cm.setDisabled('row_after', !p); - cm.setDisabled('row_before', !p); - cm.setDisabled('row_props', !p); - cm.setDisabled('cell_props', !p); - cm.setDisabled('split_cells', !p); - cm.setDisabled('merge_cells', !p); - }); - - ed.onInit.add(function(ed) { - var startTable, startCell, dom = ed.dom, tableGrid; - - winMan = ed.windowManager; - - // Add cell selection logic - ed.onMouseDown.add(function(ed, e) { - if (e.button != 2) { - cleanup(); - - startCell = dom.getParent(e.target, 'td,th'); - startTable = dom.getParent(startCell, 'table'); - } - }); - - dom.bind(ed.getDoc(), 'mouseover', function(e) { - var sel, table, target = e.target; - - if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { - table = dom.getParent(target, 'table'); - if (table == startTable) { - if (!tableGrid) { - tableGrid = createTableGrid(table); - tableGrid.setStartCell(startCell); - - ed.getBody().style.webkitUserSelect = 'none'; - } - - tableGrid.setEndCell(target); - } - - // Remove current selection - sel = ed.selection.getSel(); - - if (sel.removeAllRanges) - sel.removeAllRanges(); - else - sel.empty(); - - e.preventDefault(); - } - }); - - ed.onMouseUp.add(function(ed, e) { - var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; - - // Move selection to startCell - if (startCell) { - if (tableGrid) - ed.getBody().style.webkitUserSelect = ''; - - function setPoint(node, start) { - var walker = new tinymce.dom.TreeWalker(node, node); - - do { - // Text node - if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { - if (start) - rng.setStart(node, 0); - else - rng.setEnd(node, node.nodeValue.length); - - return; - } - - // BR element - if (node.nodeName == 'BR') { - if (start) - rng.setStartBefore(node); - else - rng.setEndBefore(node); - - return; - } - } while (node = (start ? walker.next() : walker.prev())); - }; - - // Try to expand text selection as much as we can only Gecko supports cell selection - selectedCells = dom.select('td.mceSelected,th.mceSelected'); - if (selectedCells.length > 0) { - rng = dom.createRng(); - node = selectedCells[0]; - endNode = selectedCells[selectedCells.length - 1]; - - setPoint(node, 1); - walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); - - do { - if (node.nodeName == 'TD' || node.nodeName == 'TH') { - if (!dom.hasClass(node, 'mceSelected')) - break; - - lastNode = node; - } - } while (node = walker.next()); - - setPoint(lastNode); - - sel.setRng(rng); - } - - ed.nodeChanged(); - startCell = tableGrid = startTable = null; - } - }); - - ed.onKeyUp.add(function(ed, e) { - cleanup(); - }); - - // Add context menu - if (ed && ed.plugins.contextmenu) { - ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { - var sm, se = ed.selection, el = se.getNode() || ed.getBody(); - - if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { - m.removeAll(); - - if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { - m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); - m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); - m.addSeparator(); - } - - if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { - m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); - m.addSeparator(); - } - - m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); - m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); - m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); - m.addSeparator(); - - // Cell menu - sm = m.addMenu({title : 'table.cell'}); - sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); - sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); - sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); - - // Row menu - sm = m.addMenu({title : 'table.row'}); - sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); - sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); - sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); - sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); - sm.addSeparator(); - sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); - sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); - sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); - sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); - - // Column menu - sm = m.addMenu({title : 'table.col'}); - sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); - sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); - sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); - } else - m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); - }); - } - - // Fixes an issue on Gecko where it's impossible to place the caret behind a table - // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled - if (!tinymce.isIE) { - function fixTableCaretPos() { - var last; - - // Skip empty text nodes form the end - for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; - - if (last && last.nodeName == 'TABLE') - ed.dom.add(ed.getBody(), 'p', null, '
    '); - }; - - // Fixes an bug where it's impossible to place the caret before a table in Gecko - // this fix solves it by detecting when the caret is at the beginning of such a table - // and then manually moves the caret infront of the table - if (tinymce.isGecko) { - ed.onKeyDown.add(function(ed, e) { - var rng, table, dom = ed.dom; - - // On gecko it's not possible to place the caret before a table - if (e.keyCode == 37 || e.keyCode == 38) { - rng = ed.selection.getRng(); - table = dom.getParent(rng.startContainer, 'table'); - - if (table && ed.getBody().firstChild == table) { - if (isAtStart(rng, table)) { - rng = dom.createRng(); - - rng.setStartBefore(table); - rng.setEndBefore(table); - - ed.selection.setRng(rng); - - e.preventDefault(); - } - } - } - }); - } - - ed.onKeyUp.add(fixTableCaretPos); - ed.onSetContent.add(fixTableCaretPos); - ed.onVisualAid.add(fixTableCaretPos); - - ed.onPreProcess.add(function(ed, o) { - var last = o.node.lastChild; - - if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') - ed.dom.remove(last); - }); - - fixTableCaretPos(); - } - }); - - // Register action commands - each({ - mceTableSplitCells : function(grid) { - grid.split(); - }, - - mceTableMergeCells : function(grid) { - var rowSpan, colSpan, cell; - - cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); - if (cell) { - rowSpan = cell.rowSpan; - colSpan = cell.colSpan; - } - - if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { - winMan.open({ - url : url + '/merge_cells.htm', - width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), - height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), - inline : 1 - }, { - rows : rowSpan, - cols : colSpan, - onaction : function(data) { - grid.merge(cell, data.cols, data.rows); - }, - plugin_url : url - }); - } else - grid.merge(); - }, - - mceTableInsertRowBefore : function(grid) { - grid.insertRow(true); - }, - - mceTableInsertRowAfter : function(grid) { - grid.insertRow(); - }, - - mceTableInsertColBefore : function(grid) { - grid.insertCol(true); - }, - - mceTableInsertColAfter : function(grid) { - grid.insertCol(); - }, - - mceTableDeleteCol : function(grid) { - grid.deleteCols(); - }, - - mceTableDeleteRow : function(grid) { - grid.deleteRows(); - }, - - mceTableCutRow : function(grid) { - clipboardRows = grid.cutRows(); - }, - - mceTableCopyRow : function(grid) { - clipboardRows = grid.copyRows(); - }, - - mceTablePasteRowBefore : function(grid) { - grid.pasteRows(clipboardRows, true); - }, - - mceTablePasteRowAfter : function(grid) { - grid.pasteRows(clipboardRows); - }, - - mceTableDelete : function(grid) { - grid.deleteTable(); - } - }, function(func, name) { - ed.addCommand(name, function() { - var grid = createTableGrid(); - - if (grid) { - func(grid); - ed.execCommand('mceRepaint'); - cleanup(); - } - }); - }); - - // Register dialog commands - each({ - mceInsertTable : function(val) { - winMan.open({ - url : url + '/table.htm', - width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), - height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), - inline : 1 - }, { - plugin_url : url, - action : val ? val.action : 0 - }); - }, - - mceTableRowProps : function() { - winMan.open({ - url : url + '/row.htm', - width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), - height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }, - - mceTableCellProps : function() { - winMan.open({ - url : url + '/cell.htm', - width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), - height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - } - }, function(func, name) { - ed.addCommand(name, function(ui, val) { - func(val); - }); - }); - } - }); - - // Register plugin - tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var each = tinymce.each; + + /** + * Table Grid class. + */ + function TableGrid(table, dom, selection) { + var grid, startPos, endPos, selectedCell; + + buildGrid(); + selectedCell = dom.getParent(selection.getStart(), 'th,td'); + if (selectedCell) { + startPos = getPos(selectedCell); + endPos = findEndPos(); + selectedCell = getCell(startPos.x, startPos.y); + } + + function cloneNode(node, children) { + node = node.cloneNode(children); + node.removeAttribute('id'); + + return node; + } + + function buildGrid() { + var startY = 0; + + grid = []; + + each(['thead', 'tbody', 'tfoot'], function(part) { + var rows = dom.select(part + ' tr', table); + + each(rows, function(tr, y) { + y += startY; + + each(dom.select('td,th', tr), function(td, x) { + var x2, y2, rowspan, colspan; + + // Skip over existing cells produced by rowspan + if (grid[y]) { + while (grid[y][x]) + x++; + } + + // Get col/rowspan from cell + rowspan = getSpanVal(td, 'rowspan'); + colspan = getSpanVal(td, 'colspan'); + + // Fill out rowspan/colspan right and down + for (y2 = y; y2 < y + rowspan; y2++) { + if (!grid[y2]) + grid[y2] = []; + + for (x2 = x; x2 < x + colspan; x2++) { + grid[y2][x2] = { + part : part, + real : y2 == y && x2 == x, + elm : td, + rowspan : rowspan, + colspan : colspan + }; + } + } + }); + }); + + startY += rows.length; + }); + }; + + function getCell(x, y) { + var row; + + row = grid[y]; + if (row) + return row[x]; + }; + + function getSpanVal(td, name) { + return parseInt(td.getAttribute(name) || 1); + }; + + function isCellSelected(cell) { + return dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell; + }; + + function getSelectedRows() { + var rows = []; + + each(table.rows, function(row) { + each(row.cells, function(cell) { + if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { + rows.push(row); + return false; + } + }); + }); + + return rows; + }; + + function deleteTable() { + var rng = dom.createRng(); + + rng.setStartAfter(table); + rng.setEndAfter(table); + + selection.setRng(rng); + + dom.remove(table); + }; + + function cloneCell(cell) { + var formatNode; + + // Clone formats + tinymce.walk(cell, function(node) { + var curNode; + + if (node.nodeType == 3) { + each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { + node = cloneNode(node, false); + + if (!formatNode) + formatNode = curNode = node; + else if (curNode) + curNode.appendChild(node); + + curNode = node; + }); + + // Add something to the inner node + if (curNode) + curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; + + return false; + } + }, 'childNodes'); + + cell = cloneNode(cell, false); + cell.rowSpan = cell.colSpan = 1; + + if (formatNode) { + cell.appendChild(formatNode); + } else { + if (!tinymce.isIE) + cell.innerHTML = '
    '; + } + + return cell; + }; + + function cleanup() { + var rng = dom.createRng(); + + // Empty rows + each(dom.select('tr', table), function(tr) { + if (tr.cells.length == 0) + dom.remove(tr); + }); + + // Empty table + if (dom.select('tr', table).length == 0) { + rng.setStartAfter(table); + rng.setEndAfter(table); + selection.setRng(rng); + dom.remove(table); + return; + } + + // Empty header/body/footer + each(dom.select('thead,tbody,tfoot', table), function(part) { + if (part.rows.length == 0) + dom.remove(part); + }); + + // Restore selection to start position if it still exists + buildGrid(); + + // Restore the selection to the closest table position + row = grid[Math.min(grid.length - 1, startPos.y)]; + if (row) { + selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); + selection.collapse(true); + } + }; + + function fillLeftDown(x, y, rows, cols) { + var tr, x2, r, c, cell; + + tr = grid[y][x].elm.parentNode; + for (r = 1; r <= rows; r++) { + tr = dom.getNext(tr, 'tr'); + + if (tr) { + // Loop left to find real cell + for (x2 = x; x2 >= 0; x2--) { + cell = grid[y + r][x2].elm; + + if (cell.parentNode == tr) { + // Append clones after + for (c = 1; c <= cols; c++) + dom.insertAfter(cloneCell(cell), cell); + + break; + } + } + + if (x2 == -1) { + // Insert nodes before first cell + for (c = 1; c <= cols; c++) + tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); + } + } + } + }; + + function split() { + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan, newCell, i; + + if (isCellSelected(cell)) { + cell = cell.elm; + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan > 1 || rowSpan > 1) { + cell.colSpan = cell.rowSpan = 1; + + // Insert cells right + for (i = 0; i < colSpan - 1; i++) + dom.insertAfter(cloneCell(cell), cell); + + fillLeftDown(x, y, rowSpan - 1, colSpan); + } + } + }); + }); + }; + + function merge(cell, cols, rows) { + var startX, startY, endX, endY, x, y, startCell, endCell, cell, children; + + // Use specified cell and cols/rows + if (cell) { + pos = getPos(cell); + startX = pos.x; + startY = pos.y; + endX = startX + (cols - 1); + endY = startY + (rows - 1); + } else { + // Use selection + startX = startPos.x; + startY = startPos.y; + endX = endPos.x; + endY = endPos.y; + } + + // Find start/end cells + startCell = getCell(startX, startY); + endCell = getCell(endX, endY); + + // Check if the cells exists and if they are of the same part for example tbody = tbody + if (startCell && endCell && startCell.part == endCell.part) { + // Split and rebuild grid + split(); + buildGrid(); + + // Set row/col span to start cell + startCell = getCell(startX, startY).elm; + startCell.colSpan = (endX - startX) + 1; + startCell.rowSpan = (endY - startY) + 1; + + // Remove other cells and add it's contents to the start cell + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x].elm; + + if (cell != startCell) { + // Move children to startCell + children = tinymce.grep(cell.childNodes); + each(children, function(node, i) { + // Jump over last BR element + if (node.nodeName != 'BR' || i != children.length - 1) + startCell.appendChild(node); + }); + + // Remove cell + dom.remove(cell); + } + } + } + + // Remove empty rows etc and restore caret location + cleanup(); + } + }; + + function insertRow(before) { + var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell; + + // Find first/last row + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + cell = cell.elm; + rowElm = cell.parentNode; + newRow = cloneNode(rowElm, false); + posY = y; + + if (before) + return false; + } + }); + + if (before) + return !posY; + }); + + for (x = 0; x < grid[0].length; x++) { + cell = grid[posY][x].elm; + + if (cell != lastCell) { + if (!before) { + rowSpan = getSpanVal(cell, 'rowspan'); + if (rowSpan > 1) { + cell.rowSpan = rowSpan + 1; + continue; + } + } else { + // Check if cell above can be expanded + if (posY > 0 && grid[posY - 1][x]) { + otherCell = grid[posY - 1][x].elm; + rowSpan = getSpanVal(otherCell, 'rowspan'); + if (rowSpan > 1) { + otherCell.rowSpan = rowSpan + 1; + continue; + } + } + } + + // Insert new cell into new row + newCell = cloneCell(cell) + newCell.colSpan = cell.colSpan; + newRow.appendChild(newCell); + + lastCell = cell; + } + } + + if (newRow.hasChildNodes()) { + if (!before) + dom.insertAfter(newRow, rowElm); + else + rowElm.parentNode.insertBefore(newRow, rowElm); + } + }; + + function insertCol(before) { + var posX, lastCell; + + // Find first/last column + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + posX = x; + + if (before) + return false; + } + }); + + if (before) + return !posX; + }); + + each(grid, function(row, y) { + var cell = row[posX].elm, rowSpan, colSpan; + + if (cell != lastCell) { + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan == 1) { + if (!before) { + dom.insertAfter(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } else { + cell.parentNode.insertBefore(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } + } else + cell.colSpan++; + + lastCell = cell; + } + }); + }; + + function deleteCols() { + var cols = []; + + // Get selected column indexes + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { + each(grid, function(row) { + var cell = row[x].elm, colSpan; + + colSpan = getSpanVal(cell, 'colspan'); + + if (colSpan > 1) + cell.colSpan = colSpan - 1; + else + dom.remove(cell); + }); + + cols.push(x); + } + }); + }); + + cleanup(); + }; + + function deleteRows() { + var rows; + + function deleteRow(tr) { + var nextTr, pos, lastCell; + + nextTr = dom.getNext(tr, 'tr'); + + // Move down row spanned cells + each(tr.cells, function(cell) { + var rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan > 1) { + cell.rowSpan = rowSpan - 1; + pos = getPos(cell); + fillLeftDown(pos.x, pos.y, 1, 1); + } + }); + + // Delete cells + pos = getPos(tr.cells[0]); + each(grid[pos.y], function(cell) { + var rowSpan; + + cell = cell.elm; + + if (cell != lastCell) { + rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan <= 1) + dom.remove(cell); + else + cell.rowSpan = rowSpan - 1; + + lastCell = cell; + } + }); + }; + + // Get selected rows and move selection out of scope + rows = getSelectedRows(); + + // Delete all selected rows + each(rows.reverse(), function(tr) { + deleteRow(tr); + }); + + cleanup(); + }; + + function cutRows() { + var rows = getSelectedRows(); + + dom.remove(rows); + cleanup(); + + return rows; + }; + + function copyRows() { + var rows = getSelectedRows(); + + each(rows, function(row, i) { + rows[i] = cloneNode(row, true); + }); + + return rows; + }; + + function pasteRows(rows, before) { + var selectedRows = getSelectedRows(), + targetRow = selectedRows[before ? 0 : selectedRows.length - 1], + targetCellCount = targetRow.cells.length; + + // Calc target cell count + each(grid, function(row) { + var match; + + targetCellCount = 0; + each(row, function(cell, x) { + if (cell.real) + targetCellCount += cell.colspan; + + if (cell.elm.parentNode == targetRow) + match = 1; + }); + + if (match) + return false; + }); + + if (!before) + rows.reverse(); + + each(rows, function(row) { + var cellCount = row.cells.length, cell; + + // Remove col/rowspans + for (i = 0; i < cellCount; i++) { + cell = row.cells[i]; + cell.colSpan = cell.rowSpan = 1; + } + + // Needs more cells + for (i = cellCount; i < targetCellCount; i++) + row.appendChild(cloneCell(row.cells[cellCount - 1])); + + // Needs less cells + for (i = targetCellCount; i < cellCount; i++) + dom.remove(row.cells[i]); + + // Add before/after + if (before) + targetRow.parentNode.insertBefore(row, targetRow); + else + dom.insertAfter(row, targetRow); + }); + }; + + function getPos(target) { + var pos; + + each(grid, function(row, y) { + each(row, function(cell, x) { + if (cell.elm == target) { + pos = {x : x, y : y}; + return false; + } + }); + + return !pos; + }); + + return pos; + }; + + function setStartCell(cell) { + startPos = getPos(cell); + }; + + function findEndPos() { + var pos, maxX, maxY; + + maxX = maxY = 0; + + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan; + + if (isCellSelected(cell)) { + cell = grid[y][x]; + + if (x > maxX) + maxX = x; + + if (y > maxY) + maxY = y; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + }); + }); + + return {x : maxX, y : maxY}; + }; + + function setEndCell(cell) { + var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; + + endPos = getPos(cell); + + if (startPos && endPos) { + // Get start/end positions + startX = Math.min(startPos.x, endPos.x); + startY = Math.min(startPos.y, endPos.y); + endX = Math.max(startPos.x, endPos.x); + endY = Math.max(startPos.y, endPos.y); + + // Expand end positon to include spans + maxX = endX; + maxY = endY; + + // Expand startX + for (y = startY; y <= maxY; y++) { + cell = grid[y][startX]; + + if (!cell.real) { + if (startX - (cell.colspan - 1) < startX) + startX -= cell.colspan - 1; + } + } + + // Expand startY + for (x = startX; x <= maxX; x++) { + cell = grid[startY][x]; + + if (!cell.real) { + if (startY - (cell.rowspan - 1) < startY) + startY -= cell.rowspan - 1; + } + } + + // Find max X, Y + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x]; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + } + + // Remove current selection + dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + + // Add new selection + for (y = startY; y <= maxY; y++) { + for (x = startX; x <= maxX; x++) + dom.addClass(grid[y][x].elm, 'mceSelected'); + } + } + }; + + // Expose to public + tinymce.extend(this, { + deleteTable : deleteTable, + split : split, + merge : merge, + insertRow : insertRow, + insertCol : insertCol, + deleteCols : deleteCols, + deleteRows : deleteRows, + cutRows : cutRows, + copyRows : copyRows, + pasteRows : pasteRows, + getPos : getPos, + setStartCell : setStartCell, + setEndCell : setEndCell + }); + }; + + tinymce.create('tinymce.plugins.TablePlugin', { + init : function(ed, url) { + var winMan, clipboardRows; + + function createTableGrid(node) { + var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); + + if (tblElm) + return new TableGrid(tblElm, ed.dom, selection); + }; + + function cleanup() { + // Restore selection possibilities + ed.getBody().style.webkitUserSelect = ''; + ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + }; + + // Register buttons + each([ + ['table', 'table.desc', 'mceInsertTable', true], + ['delete_table', 'table.del', 'mceTableDelete'], + ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table.row_desc', 'mceTableRowProps', true], + ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] + ], function(c) { + ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); + }); + + // Select whole table is a table border is clicked + if (!tinymce.isIE) { + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'TABLE') + ed.selection.select(e); + }); + } + + // Handle node change updates + ed.onNodeChange.add(function(ed, cm, n) { + var p; + + n = ed.selection.getStart(); + p = ed.dom.getParent(n, 'td,th,caption'); + cm.setActive('table', n.nodeName === 'TABLE' || !!p); + + // Disable table tools if we are in caption + if (p && p.nodeName === 'CAPTION') + p = 0; + + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_col', !p); + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_row', !p); + cm.setDisabled('col_after', !p); + cm.setDisabled('col_before', !p); + cm.setDisabled('row_after', !p); + cm.setDisabled('row_before', !p); + cm.setDisabled('row_props', !p); + cm.setDisabled('cell_props', !p); + cm.setDisabled('split_cells', !p); + cm.setDisabled('merge_cells', !p); + }); + + ed.onInit.add(function(ed) { + var startTable, startCell, dom = ed.dom, tableGrid; + + winMan = ed.windowManager; + + // Add cell selection logic + ed.onMouseDown.add(function(ed, e) { + if (e.button != 2) { + cleanup(); + + startCell = dom.getParent(e.target, 'td,th'); + startTable = dom.getParent(startCell, 'table'); + } + }); + + dom.bind(ed.getDoc(), 'mouseover', function(e) { + var sel, table, target = e.target; + + if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { + table = dom.getParent(target, 'table'); + if (table == startTable) { + if (!tableGrid) { + tableGrid = createTableGrid(table); + tableGrid.setStartCell(startCell); + + ed.getBody().style.webkitUserSelect = 'none'; + } + + tableGrid.setEndCell(target); + } + + // Remove current selection + sel = ed.selection.getSel(); + + if (sel.removeAllRanges) + sel.removeAllRanges(); + else + sel.empty(); + + e.preventDefault(); + } + }); + + ed.onMouseUp.add(function(ed, e) { + var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; + + // Move selection to startCell + if (startCell) { + if (tableGrid) + ed.getBody().style.webkitUserSelect = ''; + + function setPoint(node, start) { + var walker = new tinymce.dom.TreeWalker(node, node); + + do { + // Text node + if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { + if (start) + rng.setStart(node, 0); + else + rng.setEnd(node, node.nodeValue.length); + + return; + } + + // BR element + if (node.nodeName == 'BR') { + if (start) + rng.setStartBefore(node); + else + rng.setEndBefore(node); + + return; + } + } while (node = (start ? walker.next() : walker.prev())); + }; + + // Try to expand text selection as much as we can only Gecko supports cell selection + selectedCells = dom.select('td.mceSelected,th.mceSelected'); + if (selectedCells.length > 0) { + rng = dom.createRng(); + node = selectedCells[0]; + endNode = selectedCells[selectedCells.length - 1]; + + setPoint(node, 1); + walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); + + do { + if (node.nodeName == 'TD' || node.nodeName == 'TH') { + if (!dom.hasClass(node, 'mceSelected')) + break; + + lastNode = node; + } + } while (node = walker.next()); + + setPoint(lastNode); + + sel.setRng(rng); + } + + ed.nodeChanged(); + startCell = tableGrid = startTable = null; + } + }); + + ed.onKeyUp.add(function(ed, e) { + cleanup(); + }); + + // Add context menu + if (ed && ed.plugins.contextmenu) { + ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { + var sm, se = ed.selection, el = se.getNode() || ed.getBody(); + + if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { + m.removeAll(); + + if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + m.addSeparator(); + } + + if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + m.addSeparator(); + } + + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); + m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); + m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); + m.addSeparator(); + + // Cell menu + sm = m.addMenu({title : 'table.cell'}); + sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); + sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); + sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); + + // Row menu + sm = m.addMenu({title : 'table.row'}); + sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); + sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); + sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); + sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); + sm.addSeparator(); + sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); + sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); + sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); + sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); + + // Column menu + sm = m.addMenu({title : 'table.col'}); + sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); + sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); + sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); + } else + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); + }); + } + + // Fixes an issue on Gecko where it's impossible to place the caret behind a table + // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled + if (!tinymce.isIE) { + function fixTableCaretPos() { + var last; + + // Skip empty text nodes form the end + for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; + + if (last && last.nodeName == 'TABLE') + ed.dom.add(ed.getBody(), 'p', null, '
    '); + }; + + // Fixes an bug where it's impossible to place the caret before a table in Gecko + // this fix solves it by detecting when the caret is at the beginning of such a table + // and then manually moves the caret infront of the table + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + var rng, table, dom = ed.dom; + + // On gecko it's not possible to place the caret before a table + if (e.keyCode == 37 || e.keyCode == 38) { + rng = ed.selection.getRng(); + table = dom.getParent(rng.startContainer, 'table'); + + if (table && ed.getBody().firstChild == table) { + if (isAtStart(rng, table)) { + rng = dom.createRng(); + + rng.setStartBefore(table); + rng.setEndBefore(table); + + ed.selection.setRng(rng); + + e.preventDefault(); + } + } + } + }); + } + + ed.onKeyUp.add(fixTableCaretPos); + ed.onSetContent.add(fixTableCaretPos); + ed.onVisualAid.add(fixTableCaretPos); + + ed.onPreProcess.add(function(ed, o) { + var last = o.node.lastChild; + + if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') + ed.dom.remove(last); + }); + + fixTableCaretPos(); + } + }); + + // Register action commands + each({ + mceTableSplitCells : function(grid) { + grid.split(); + }, + + mceTableMergeCells : function(grid) { + var rowSpan, colSpan, cell; + + cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); + if (cell) { + rowSpan = cell.rowSpan; + colSpan = cell.colSpan; + } + + if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { + winMan.open({ + url : url + '/merge_cells.htm', + width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), + height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), + inline : 1 + }, { + rows : rowSpan, + cols : colSpan, + onaction : function(data) { + grid.merge(cell, data.cols, data.rows); + }, + plugin_url : url + }); + } else + grid.merge(); + }, + + mceTableInsertRowBefore : function(grid) { + grid.insertRow(true); + }, + + mceTableInsertRowAfter : function(grid) { + grid.insertRow(); + }, + + mceTableInsertColBefore : function(grid) { + grid.insertCol(true); + }, + + mceTableInsertColAfter : function(grid) { + grid.insertCol(); + }, + + mceTableDeleteCol : function(grid) { + grid.deleteCols(); + }, + + mceTableDeleteRow : function(grid) { + grid.deleteRows(); + }, + + mceTableCutRow : function(grid) { + clipboardRows = grid.cutRows(); + }, + + mceTableCopyRow : function(grid) { + clipboardRows = grid.copyRows(); + }, + + mceTablePasteRowBefore : function(grid) { + grid.pasteRows(clipboardRows, true); + }, + + mceTablePasteRowAfter : function(grid) { + grid.pasteRows(clipboardRows); + }, + + mceTableDelete : function(grid) { + grid.deleteTable(); + } + }, function(func, name) { + ed.addCommand(name, function() { + var grid = createTableGrid(); + + if (grid) { + func(grid); + ed.execCommand('mceRepaint'); + cleanup(); + } + }); + }); + + // Register dialog commands + each({ + mceInsertTable : function(val) { + winMan.open({ + url : url + '/table.htm', + width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), + height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + action : val ? val.action : 0 + }); + }, + + mceTableRowProps : function() { + winMan.open({ + url : url + '/row.htm', + width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }, + + mceTableCellProps : function() { + winMan.open({ + url : url + '/cell.htm', + width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + } + }, function(func, name) { + ed.addCommand(name, function(ui, val) { + func(val); + }); + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); })(tinymce); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/js/cell.js b/src/lab/final-build/jscripts/tiny_mce/plugins/table/js/cell.js old mode 100755 new mode 100644 index b5fc1fda..fae7e6fb --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/js/cell.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/js/cell.js @@ -1,286 +1,286 @@ -tinyMCEPopup.requireLangPack(); - -var ed; - -function init() { - ed = tinyMCEPopup.editor; - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') - - var inst = ed; - var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th"); - var formObj = document.forms[0]; - var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style")); - - // Get table cell data - var celltype = tdElm.nodeName.toLowerCase(); - var align = ed.dom.getAttrib(tdElm, 'align'); - var valign = ed.dom.getAttrib(tdElm, 'valign'); - var width = trimSize(getStyle(tdElm, 'width', 'width')); - var height = trimSize(getStyle(tdElm, 'height', 'height')); - var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); - var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); - var className = ed.dom.getAttrib(tdElm, 'class'); - var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); - var id = ed.dom.getAttrib(tdElm, 'id'); - var lang = ed.dom.getAttrib(tdElm, 'lang'); - var dir = ed.dom.getAttrib(tdElm, 'dir'); - var scope = ed.dom.getAttrib(tdElm, 'scope'); - - // Setup form - addClassesToList('class', 'table_cell_styles'); - TinyMCE_EditableSelects.init(); - - if (!ed.dom.hasClass(tdElm, 'mceSelected')) { - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.backgroundimage.value = backgroundimage; - formObj.width.value = width; - formObj.height.value = height; - formObj.id.value = id; - formObj.lang.value = lang; - formObj.style.value = ed.dom.serializeStyle(st); - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'valign', valign); - selectByValue(formObj, 'class', className, true, true); - selectByValue(formObj, 'celltype', celltype); - selectByValue(formObj, 'dir', dir); - selectByValue(formObj, 'scope', scope); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); - } else - tinyMCEPopup.dom.hide('action'); -} - -function updateAction() { - var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; - - tinyMCEPopup.restoreSelection(); - el = ed.selection.getStart(); - tdElm = ed.dom.getParent(el, "td,th"); - trElm = ed.dom.getParent(el, "tr"); - tableElm = ed.dom.getParent(el, "table"); - - // Cell is selected - if (ed.dom.hasClass(tdElm, 'mceSelected')) { - // Update all selected sells - tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) { - updateCell(td); - }); - - ed.addVisual(); - ed.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - return; - } - - ed.execCommand('mceBeginUndoLevel'); - - switch (getSelectValue(formObj, 'action')) { - case "cell": - var celltype = getSelectValue(formObj, 'celltype'); - var scope = getSelectValue(formObj, 'scope'); - - function doUpdate(s) { - if (s) { - updateCell(tdElm); - - ed.addVisual(); - ed.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - } - }; - - if (ed.getParam("accessibility_warnings", 1)) { - if (celltype == "th" && scope == "") - tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); - else - doUpdate(1); - - return; - } - - updateCell(tdElm); - break; - - case "row": - var cell = trElm.firstChild; - - if (cell.nodeName != "TD" && cell.nodeName != "TH") - cell = nextCell(cell); - - do { - cell = updateCell(cell, true); - } while ((cell = nextCell(cell)) != null); - - break; - - case "all": - var rows = tableElm.getElementsByTagName("tr"); - - for (var i=0; i 0) { - tinymce.each(tableElm.rows, function(tr) { - var i; - - for (i = 0; i < tr.cells.length; i++) { - if (dom.hasClass(tr.cells[i], 'mceSelected')) { - updateRow(tr, true); - return; - } - } - }); - - inst.addVisual(); - inst.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - return; - } - - inst.execCommand('mceBeginUndoLevel'); - - switch (action) { - case "row": - updateRow(trElm); - break; - - case "all": - var rows = tableElm.getElementsByTagName("tr"); - - for (var i=0; i 0) { + tinymce.each(tableElm.rows, function(tr) { + var i; + + for (i = 0; i < tr.cells.length; i++) { + if (dom.hasClass(tr.cells[i], 'mceSelected')) { + updateRow(tr, true); + return; + } + } + }); + + inst.addVisual(); + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + return; + } + + inst.execCommand('mceBeginUndoLevel'); + + switch (action) { + case "row": + updateRow(trElm); + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i colLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); - return false; - } else if (rowLimit && rows > rowLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); - return false; - } else if (cellLimit && cols * rows > cellLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); - return false; - } - - // Update table - if (action == "update") { - inst.execCommand('mceBeginUndoLevel'); - - dom.setAttrib(elm, 'cellPadding', cellpadding, true); - dom.setAttrib(elm, 'cellSpacing', cellspacing, true); - dom.setAttrib(elm, 'border', border); - dom.setAttrib(elm, 'align', align); - dom.setAttrib(elm, 'frame', frame); - dom.setAttrib(elm, 'rules', rules); - dom.setAttrib(elm, 'class', className); - dom.setAttrib(elm, 'style', style); - dom.setAttrib(elm, 'id', id); - dom.setAttrib(elm, 'summary', summary); - dom.setAttrib(elm, 'dir', dir); - dom.setAttrib(elm, 'lang', lang); - - capEl = inst.dom.select('caption', elm)[0]; - - if (capEl && !caption) - capEl.parentNode.removeChild(capEl); - - if (!capEl && caption) { - capEl = elm.ownerDocument.createElement('caption'); - - if (!tinymce.isIE) - capEl.innerHTML = '
    '; - - elm.insertBefore(capEl, elm.firstChild); - } - - if (width && inst.settings.inline_styles) { - dom.setStyle(elm, 'width', width); - dom.setAttrib(elm, 'width', ''); - } else { - dom.setAttrib(elm, 'width', width, true); - dom.setStyle(elm, 'width', ''); - } - - // Remove these since they are not valid XHTML - dom.setAttrib(elm, 'borderColor', ''); - dom.setAttrib(elm, 'bgColor', ''); - dom.setAttrib(elm, 'background', ''); - - if (height && inst.settings.inline_styles) { - dom.setStyle(elm, 'height', height); - dom.setAttrib(elm, 'height', ''); - } else { - dom.setAttrib(elm, 'height', height, true); - dom.setStyle(elm, 'height', ''); - } - - if (background != '') - elm.style.backgroundImage = "url('" + background + "')"; - else - elm.style.backgroundImage = ''; - -/* if (tinyMCEPopup.getParam("inline_styles")) { - if (width != '') - elm.style.width = getCSSSize(width); - }*/ - - if (bordercolor != "") { - elm.style.borderColor = bordercolor; - elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; - elm.style.borderWidth = border == "" ? "1px" : border; - } else - elm.style.borderColor = ''; - - elm.style.backgroundColor = bgcolor; - elm.style.height = getCSSSize(height); - - inst.addVisual(); - - // Fix for stange MSIE align bug - //elm.outerHTML = elm.outerHTML; - - inst.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - - // Repaint if dimensions changed - if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) - inst.execCommand('mceRepaint'); - - tinyMCEPopup.close(); - return true; - } - - // Create new table - html += ''); - - tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { - if (patt) - patt += ','; - - patt += n + ' ._mce_marker'; - }); - - tinymce.each(inst.dom.select(patt), function(n) { - inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); - }); - - dom.setOuterHTML(dom.select('br._mce_marker')[0], html); - } else - inst.execCommand('mceInsertContent', false, html); - - tinymce.each(dom.select('table[_mce_new]'), function(node) { - var td = dom.select('td', node); - - inst.selection.select(td[0], true); - inst.selection.collapse(); - - dom.setAttrib(node, '_mce_new', ''); - }); - - inst.addVisual(); - inst.execCommand('mceEndUndoLevel'); - - tinyMCEPopup.close(); -} - -function makeAttrib(attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib]; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value == "") - return ""; - - // XML encode it - value = value.replace(/&/g, '&'); - value = value.replace(/\"/g, '"'); - value = value.replace(//g, '>'); - - return ' ' + attrib + '="' + value + '"'; -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); - var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; - var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame; - var inst = tinyMCEPopup.editor, dom = inst.dom; - var formObj = document.forms[0]; - var elm = dom.getParent(inst.selection.getNode(), "table"); - - action = tinyMCEPopup.getWindowArg('action'); - - if (!action) - action = elm ? "update" : "insert"; - - if (elm && action != "insert") { - var rowsAr = elm.rows; - var cols = 0; - for (var i=0; i cols) - cols = rowsAr[i].cells.length; - - cols = cols; - rows = rowsAr.length; - - st = dom.parseStyle(dom.getAttrib(elm, "style")); - border = trimSize(getStyle(elm, 'border', 'borderWidth')); - cellpadding = dom.getAttrib(elm, 'cellpadding', ""); - cellspacing = dom.getAttrib(elm, 'cellspacing', ""); - width = trimSize(getStyle(elm, 'width', 'width')); - height = trimSize(getStyle(elm, 'height', 'height')); - bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); - bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); - align = dom.getAttrib(elm, 'align', align); - frame = dom.getAttrib(elm, 'frame'); - rules = dom.getAttrib(elm, 'rules'); - className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); - id = dom.getAttrib(elm, 'id'); - summary = dom.getAttrib(elm, 'summary'); - style = dom.serializeStyle(st); - dir = dom.getAttrib(elm, 'dir'); - lang = dom.getAttrib(elm, 'lang'); - background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; - - orgTableWidth = width; - orgTableHeight = height; - - action = "update"; - formObj.insert.value = inst.getLang('update'); - } - - addClassesToList('class', "table_styles"); - TinyMCE_EditableSelects.init(); - - // Update form - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'tframe', frame); - selectByValue(formObj, 'rules', rules); - selectByValue(formObj, 'class', className, true, true); - formObj.cols.value = cols; - formObj.rows.value = rows; - formObj.border.value = border; - formObj.cellpadding.value = cellpadding; - formObj.cellspacing.value = cellspacing; - formObj.width.value = width; - formObj.height.value = height; - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.id.value = id; - formObj.summary.value = summary; - formObj.style.value = style; - formObj.dir.value = dir; - formObj.lang.value = lang; - formObj.backgroundimage.value = background; - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - // Disable some fields in update mode - if (action == "update") { - formObj.cols.disabled = true; - formObj.rows.disabled = true; - } -} - -function changedSize() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - -/* var width = formObj.width.value; - if (width != "") - st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; - else - st['width'] = "";*/ - - var height = formObj.height.value; - if (height != "") - st['height'] = getCSSSize(height); - else - st['height'] = ""; - - formObj.style.value = dom.serializeStyle(st); -} - -function changedBackgroundImage() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; - - formObj.style.value = dom.serializeStyle(st); -} - -function changedBorder() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - // Update border width if the element has a color - if (formObj.border.value != "" && formObj.bordercolor.value != "") - st['border-width'] = formObj.border.value + "px"; - - formObj.style.value = dom.serializeStyle(st); -} - -function changedColor() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - st['background-color'] = formObj.bgcolor.value; - - if (formObj.bordercolor.value != "") { - st['border-color'] = formObj.bordercolor.value; - - // Add border-width if it's missing - if (!st['border-width']) - st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; - } - - formObj.style.value = dom.serializeStyle(st); -} - -function changedStyle() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - if (st['background-image']) - formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); - else - formObj.backgroundimage.value = ''; - - if (st['width']) - formObj.width.value = trimSize(st['width']); - - if (st['height']) - formObj.height.value = trimSize(st['height']); - - if (st['background-color']) { - formObj.bgcolor.value = st['background-color']; - updateColor('bgcolor_pick','bgcolor'); - } - - if (st['border-color']) { - formObj.bordercolor.value = st['border-color']; - updateColor('bordercolor_pick','bordercolor'); - } -} - -tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); + +var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom; + +function insertTable() { + var formObj = document.forms[0]; + var inst = tinyMCEPopup.editor, dom = inst.dom; + var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules; + var html = '', capEl, elm; + var cellLimit, rowLimit, colLimit; + + tinyMCEPopup.restoreSelection(); + + if (!AutoValidator.validate(formObj)) { + tinyMCEPopup.alert(inst.getLang('invalid_data')); + return false; + } + + elm = dom.getParent(inst.selection.getNode(), 'table'); + + // Get form data + cols = formObj.elements['cols'].value; + rows = formObj.elements['rows'].value; + border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0; + cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : ""; + cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : ""; + align = getSelectValue(formObj, "align"); + frame = getSelectValue(formObj, "tframe"); + rules = getSelectValue(formObj, "rules"); + width = formObj.elements['width'].value; + height = formObj.elements['height'].value; + bordercolor = formObj.elements['bordercolor'].value; + bgcolor = formObj.elements['bgcolor'].value; + className = getSelectValue(formObj, "class"); + id = formObj.elements['id'].value; + summary = formObj.elements['summary'].value; + style = formObj.elements['style'].value; + dir = formObj.elements['dir'].value; + lang = formObj.elements['lang'].value; + background = formObj.elements['backgroundimage'].value; + caption = formObj.elements['caption'].checked; + + cellLimit = tinyMCEPopup.getParam('table_cell_limit', false); + rowLimit = tinyMCEPopup.getParam('table_row_limit', false); + colLimit = tinyMCEPopup.getParam('table_col_limit', false); + + // Validate table size + if (colLimit && cols > colLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); + return false; + } else if (rowLimit && rows > rowLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); + return false; + } else if (cellLimit && cols * rows > cellLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); + return false; + } + + // Update table + if (action == "update") { + inst.execCommand('mceBeginUndoLevel'); + + dom.setAttrib(elm, 'cellPadding', cellpadding, true); + dom.setAttrib(elm, 'cellSpacing', cellspacing, true); + dom.setAttrib(elm, 'border', border); + dom.setAttrib(elm, 'align', align); + dom.setAttrib(elm, 'frame', frame); + dom.setAttrib(elm, 'rules', rules); + dom.setAttrib(elm, 'class', className); + dom.setAttrib(elm, 'style', style); + dom.setAttrib(elm, 'id', id); + dom.setAttrib(elm, 'summary', summary); + dom.setAttrib(elm, 'dir', dir); + dom.setAttrib(elm, 'lang', lang); + + capEl = inst.dom.select('caption', elm)[0]; + + if (capEl && !caption) + capEl.parentNode.removeChild(capEl); + + if (!capEl && caption) { + capEl = elm.ownerDocument.createElement('caption'); + + if (!tinymce.isIE) + capEl.innerHTML = '
    '; + + elm.insertBefore(capEl, elm.firstChild); + } + + if (width && inst.settings.inline_styles) { + dom.setStyle(elm, 'width', width); + dom.setAttrib(elm, 'width', ''); + } else { + dom.setAttrib(elm, 'width', width, true); + dom.setStyle(elm, 'width', ''); + } + + // Remove these since they are not valid XHTML + dom.setAttrib(elm, 'borderColor', ''); + dom.setAttrib(elm, 'bgColor', ''); + dom.setAttrib(elm, 'background', ''); + + if (height && inst.settings.inline_styles) { + dom.setStyle(elm, 'height', height); + dom.setAttrib(elm, 'height', ''); + } else { + dom.setAttrib(elm, 'height', height, true); + dom.setStyle(elm, 'height', ''); + } + + if (background != '') + elm.style.backgroundImage = "url('" + background + "')"; + else + elm.style.backgroundImage = ''; + +/* if (tinyMCEPopup.getParam("inline_styles")) { + if (width != '') + elm.style.width = getCSSSize(width); + }*/ + + if (bordercolor != "") { + elm.style.borderColor = bordercolor; + elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; + elm.style.borderWidth = border == "" ? "1px" : border; + } else + elm.style.borderColor = ''; + + elm.style.backgroundColor = bgcolor; + elm.style.height = getCSSSize(height); + + inst.addVisual(); + + // Fix for stange MSIE align bug + //elm.outerHTML = elm.outerHTML; + + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + + // Repaint if dimensions changed + if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) + inst.execCommand('mceRepaint'); + + tinyMCEPopup.close(); + return true; + } + + // Create new table + html += ''); + + tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { + if (patt) + patt += ','; + + patt += n + ' ._mce_marker'; + }); + + tinymce.each(inst.dom.select(patt), function(n) { + inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); + }); + + dom.setOuterHTML(dom.select('br._mce_marker')[0], html); + } else + inst.execCommand('mceInsertContent', false, html); + + tinymce.each(dom.select('table[_mce_new]'), function(node) { + var td = dom.select('td', node); + + inst.selection.select(td[0], true); + inst.selection.collapse(); + + dom.setAttrib(node, '_mce_new', ''); + }); + + inst.addVisual(); + inst.execCommand('mceEndUndoLevel'); + + tinyMCEPopup.close(); +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame; + var inst = tinyMCEPopup.editor, dom = inst.dom; + var formObj = document.forms[0]; + var elm = dom.getParent(inst.selection.getNode(), "table"); + + action = tinyMCEPopup.getWindowArg('action'); + + if (!action) + action = elm ? "update" : "insert"; + + if (elm && action != "insert") { + var rowsAr = elm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = dom.parseStyle(dom.getAttrib(elm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = dom.getAttrib(elm, 'cellpadding', ""); + cellspacing = dom.getAttrib(elm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = dom.getAttrib(elm, 'align', align); + frame = dom.getAttrib(elm, 'frame'); + rules = dom.getAttrib(elm, 'rules'); + className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); + id = dom.getAttrib(elm, 'id'); + summary = dom.getAttrib(elm, 'summary'); + style = dom.serializeStyle(st); + dir = dom.getAttrib(elm, 'dir'); + lang = dom.getAttrib(elm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + formObj.insert.value = inst.getLang('update'); + } + + addClassesToList('class', "table_styles"); + TinyMCE_EditableSelects.init(); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'tframe', frame); + selectByValue(formObj, 'rules', rules); + selectByValue(formObj, 'class', className, true, true); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + +/* var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = "";*/ + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = dom.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/plugins/table/langs/en_dlg.js old mode 100755 new mode 100644 index 000332a3..a33c987c --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/langs/en_dlg.js @@ -1,74 +1,74 @@ -tinyMCE.addI18n('en.table_dlg',{ -general_tab:"General", -advanced_tab:"Advanced", -general_props:"General properties", -advanced_props:"Advanced properties", -rowtype:"Row in table part", -title:"Insert/Modify table", -width:"Width", -height:"Height", -cols:"Cols", -rows:"Rows", -cellspacing:"Cellspacing", -cellpadding:"Cellpadding", -border:"Border", -align:"Alignment", -align_default:"Default", -align_left:"Left", -align_right:"Right", -align_middle:"Center", -row_title:"Table row properties", -cell_title:"Table cell properties", -cell_type:"Cell type", -valign:"Vertical alignment", -align_top:"Top", -align_bottom:"Bottom", -bordercolor:"Border color", -bgcolor:"Background color", -merge_cells_title:"Merge table cells", -id:"Id", -style:"Style", -langdir:"Language direction", -langcode:"Language code", -mime:"Target MIME type", -ltr:"Left to right", -rtl:"Right to left", -bgimage:"Background image", -summary:"Summary", -td:"Data", -th:"Header", -cell_cell:"Update current cell", -cell_row:"Update all cells in row", -cell_all:"Update all cells in table", -row_row:"Update current row", -row_odd:"Update odd rows in table", -row_even:"Update even rows in table", -row_all:"Update all rows in table", -thead:"Table Head", -tbody:"Table Body", -tfoot:"Table Foot", -scope:"Scope", -rowgroup:"Row Group", -colgroup:"Col Group", -col_limit:"You've exceeded the maximum number of columns of {$cols}.", -row_limit:"You've exceeded the maximum number of rows of {$rows}.", -cell_limit:"You've exceeded the maximum number of cells of {$cells}.", -missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.", -caption:"Table caption", -frame:"Frame", -frame_none:"none", -frame_groups:"groups", -frame_rows:"rows", -frame_cols:"cols", -frame_all:"all", -rules:"Rules", -rules_void:"void", -rules_above:"above", -rules_below:"below", -rules_hsides:"hsides", -rules_lhs:"lhs", -rules_rhs:"rhs", -rules_vsides:"vsides", -rules_box:"box", -rules_border:"border" +tinyMCE.addI18n('en.table_dlg',{ +general_tab:"General", +advanced_tab:"Advanced", +general_props:"General properties", +advanced_props:"Advanced properties", +rowtype:"Row in table part", +title:"Insert/Modify table", +width:"Width", +height:"Height", +cols:"Cols", +rows:"Rows", +cellspacing:"Cellspacing", +cellpadding:"Cellpadding", +border:"Border", +align:"Alignment", +align_default:"Default", +align_left:"Left", +align_right:"Right", +align_middle:"Center", +row_title:"Table row properties", +cell_title:"Table cell properties", +cell_type:"Cell type", +valign:"Vertical alignment", +align_top:"Top", +align_bottom:"Bottom", +bordercolor:"Border color", +bgcolor:"Background color", +merge_cells_title:"Merge table cells", +id:"Id", +style:"Style", +langdir:"Language direction", +langcode:"Language code", +mime:"Target MIME type", +ltr:"Left to right", +rtl:"Right to left", +bgimage:"Background image", +summary:"Summary", +td:"Data", +th:"Header", +cell_cell:"Update current cell", +cell_row:"Update all cells in row", +cell_all:"Update all cells in table", +row_row:"Update current row", +row_odd:"Update odd rows in table", +row_even:"Update even rows in table", +row_all:"Update all rows in table", +thead:"Table Head", +tbody:"Table Body", +tfoot:"Table Foot", +scope:"Scope", +rowgroup:"Row Group", +colgroup:"Col Group", +col_limit:"You've exceeded the maximum number of columns of {$cols}.", +row_limit:"You've exceeded the maximum number of rows of {$rows}.", +cell_limit:"You've exceeded the maximum number of cells of {$cells}.", +missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.", +caption:"Table caption", +frame:"Frame", +frame_none:"none", +frame_groups:"groups", +frame_rows:"rows", +frame_cols:"cols", +frame_all:"all", +rules:"Rules", +rules_void:"void", +rules_above:"above", +rules_below:"below", +rules_hsides:"hsides", +rules_lhs:"lhs", +rules_rhs:"rhs", +rules_vsides:"vsides", +rules_box:"box", +rules_border:"border" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/merge_cells.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/table/merge_cells.htm old mode 100755 new mode 100644 index 9736ed8c..b1a8d9b1 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/merge_cells.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/merge_cells.htm @@ -1,32 +1,32 @@ - - - - {#table_dlg.merge_cells_title} - - - - - - -
    -
    - {#table_dlg.merge_cells_title} - - - - - - - - - -
    {#table_dlg.cols}:
    {#table_dlg.rows}:
    -
    - -
    - - -
    -
    - - + + + + {#table_dlg.merge_cells_title} + + + + + + +
    +
    + {#table_dlg.merge_cells_title} + + + + + + + + + +
    {#table_dlg.cols}:
    {#table_dlg.rows}:
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/row.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/table/row.htm old mode 100755 new mode 100644 index 092e6c82..33fc9cc6 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/row.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/row.htm @@ -1,155 +1,155 @@ - - - - {#table_dlg.row_title} - - - - - - - - -
    - - -
    -
    -
    - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    - -
    -
    -
    - -
    -
    - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - - - - - -
     
    -
    - - - - - -
     
    -
    -
    -
    -
    - -
    -
    - -
    - - - -
    -
    - - + + + + {#table_dlg.row_title} + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/table/table.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/table/table.htm old mode 100755 new mode 100644 index f2690392..122b04ae --- a/src/lab/final-build/jscripts/tiny_mce/plugins/table/table.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/table/table.htm @@ -1,187 +1,187 @@ - - - - {#table_dlg.title} - - - - - - - - - -
    - - -
    -
    -
    - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    -
    - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - - -
     
    -
    - -
    - -
    - -
    - - - - - -
     
    -
    - - - - - -
     
    -
    -
    -
    -
    - -
    - - -
    -
    - - + + + + {#table_dlg.title} + + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +
     
    +
    + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/template/blank.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/template/blank.htm old mode 100755 new mode 100644 index ecde53fa..538a3b12 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/template/blank.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/template/blank.htm @@ -1,12 +1,12 @@ - - - blank_page - - - - - - - + + + blank_page + + + + + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/template/css/template.css b/src/lab/final-build/jscripts/tiny_mce/plugins/template/css/template.css old mode 100755 new mode 100644 index 2d23a493..0a03f2e5 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/template/css/template.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/template/css/template.css @@ -1,23 +1,23 @@ -#frmbody { - padding: 10px; - background-color: #FFF; - border: 1px solid #CCC; -} - -.frmRow { - margin-bottom: 10px; -} - -#templatesrc { - border: none; - width: 320px; - height: 240px; -} - -.title { - padding-bottom: 5px; -} - -.mceActionPanel { - padding-top: 5px; -} +#frmbody { + padding: 10px; + background-color: #FFF; + border: 1px solid #CCC; +} + +.frmRow { + margin-bottom: 10px; +} + +#templatesrc { + border: none; + width: 320px; + height: 240px; +} + +.title { + padding-bottom: 5px; +} + +.mceActionPanel { + padding-top: 5px; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin_src.js old mode 100755 new mode 100644 index 9cac2699..28baed21 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/template/editor_plugin_src.js @@ -1,159 +1,159 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var each = tinymce.each; - - tinymce.create('tinymce.plugins.TemplatePlugin', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceTemplate', function(ui) { - ed.windowManager.open({ - file : url + '/template.htm', - width : ed.getParam('template_popup_width', 750), - height : ed.getParam('template_popup_height', 600), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceInsertTemplate', t._insertTemplate, t); - - // Register buttons - ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'}); - - ed.onPreProcess.add(function(ed, o) { - var dom = ed.dom; - - each(dom.select('div', o.node), function(e) { - if (dom.hasClass(e, 'mceTmpl')) { - each(dom.select('*', e), function(e) { - if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) - e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); - }); - - t._replaceVals(e); - } - }); - }); - }, - - getInfo : function() { - return { - longname : 'Template plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://www.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - _insertTemplate : function(ui, v) { - var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent(); - - h = v.content; - - each(t.editor.getParam('template_replace_values'), function(v, k) { - if (typeof(v) != 'function') - h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v); - }); - - el = dom.create('div', null, h); - - // Find template element within div - n = dom.select('.mceTmpl', el); - if (n && n.length > 0) { - el = dom.create('div', null); - el.appendChild(n[0].cloneNode(true)); - } - - function hasClass(n, c) { - return new RegExp('\\b' + c + '\\b', 'g').test(n.className); - }; - - each(dom.select('*', el), function(n) { - // Replace cdate - if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) - n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format"))); - - // Replace mdate - if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) - n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); - - // Replace selection - if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) - n.innerHTML = sel; - }); - - t._replaceVals(el); - - ed.execCommand('mceInsertContent', false, el.innerHTML); - ed.addVisual(); - }, - - _replaceVals : function(e) { - var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values'); - - each(dom.select('*', e), function(e) { - each(vl, function(v, k) { - if (dom.hasClass(e, k)) { - if (typeof(vl[k]) == 'function') - vl[k](e); - } - }); - }); - }, - - _getDateTime : function(d, fmt) { - if (!fmt) - return ""; - - function addZeros(value, len) { - var i; - - value = "" + value; - - if (value.length < len) { - for (i=0; i<(len-value.length); i++) - value = "0" + value; - } - - return value; - } - - fmt = fmt.replace("%D", "%m/%d/%y"); - fmt = fmt.replace("%r", "%I:%M:%S %p"); - fmt = fmt.replace("%Y", "" + d.getFullYear()); - fmt = fmt.replace("%y", "" + d.getYear()); - fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); - fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); - fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); - fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); - fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); - fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); - fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); - fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]); - fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]); - fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]); - fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]); - fmt = fmt.replace("%%", "%"); - - return fmt; - } - }); - - // Register plugin - tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var each = tinymce.each; + + tinymce.create('tinymce.plugins.TemplatePlugin', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceTemplate', function(ui) { + ed.windowManager.open({ + file : url + '/template.htm', + width : ed.getParam('template_popup_width', 750), + height : ed.getParam('template_popup_height', 600), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceInsertTemplate', t._insertTemplate, t); + + // Register buttons + ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'}); + + ed.onPreProcess.add(function(ed, o) { + var dom = ed.dom; + + each(dom.select('div', o.node), function(e) { + if (dom.hasClass(e, 'mceTmpl')) { + each(dom.select('*', e), function(e) { + if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) + e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); + }); + + t._replaceVals(e); + } + }); + }); + }, + + getInfo : function() { + return { + longname : 'Template plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://www.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _insertTemplate : function(ui, v) { + var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent(); + + h = v.content; + + each(t.editor.getParam('template_replace_values'), function(v, k) { + if (typeof(v) != 'function') + h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v); + }); + + el = dom.create('div', null, h); + + // Find template element within div + n = dom.select('.mceTmpl', el); + if (n && n.length > 0) { + el = dom.create('div', null); + el.appendChild(n[0].cloneNode(true)); + } + + function hasClass(n, c) { + return new RegExp('\\b' + c + '\\b', 'g').test(n.className); + }; + + each(dom.select('*', el), function(n) { + // Replace cdate + if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) + n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format"))); + + // Replace mdate + if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) + n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); + + // Replace selection + if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) + n.innerHTML = sel; + }); + + t._replaceVals(el); + + ed.execCommand('mceInsertContent', false, el.innerHTML); + ed.addVisual(); + }, + + _replaceVals : function(e) { + var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values'); + + each(dom.select('*', e), function(e) { + each(vl, function(v, k) { + if (dom.hasClass(e, k)) { + if (typeof(vl[k]) == 'function') + vl[k](e); + } + }); + }); + }, + + _getDateTime : function(d, fmt) { + if (!fmt) + return ""; + + function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + } + + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]); + fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]); + fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]); + fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]); + fmt = fmt.replace("%%", "%"); + + return fmt; + } + }); + + // Register plugin + tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/template/js/template.js b/src/lab/final-build/jscripts/tiny_mce/plugins/template/js/template.js old mode 100755 new mode 100644 index 24045d73..7eab2ebb --- a/src/lab/final-build/jscripts/tiny_mce/plugins/template/js/template.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/template/js/template.js @@ -1,106 +1,106 @@ -tinyMCEPopup.requireLangPack(); - -var TemplateDialog = { - preInit : function() { - var url = tinyMCEPopup.getParam("template_external_list_url"); - - if (url != null) - document.write(''); - }, - - init : function() { - var ed = tinyMCEPopup.editor, tsrc, sel, x, u; - - tsrc = ed.getParam("template_templates", false); - sel = document.getElementById('tpath'); - - // Setup external template list - if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { - for (x=0, tsrc = []; x'); - }); - }, - - selectTemplate : function(u, ti) { - var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; - - if (!u) - return; - - d.body.innerHTML = this.templateHTML = this.getFileContents(u); - - for (x=0; x'); + }, + + init : function() { + var ed = tinyMCEPopup.editor, tsrc, sel, x, u; + + tsrc = ed.getParam("template_templates", false); + sel = document.getElementById('tpath'); + + // Setup external template list + if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { + for (x=0, tsrc = []; x'); + }); + }, + + selectTemplate : function(u, ti) { + var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; + + if (!u) + return; + + d.body.innerHTML = this.templateHTML = this.getFileContents(u); + + for (x=0; x - - {#template_dlg.title} - - - - - -
    -
    -
    {#template_dlg.desc}
    -
    - -
    -
    -
    -
    - {#template_dlg.preview} - -
    -
    - -
    - - -
    -
    - - + + + {#template_dlg.title} + + + + + +
    +
    +
    {#template_dlg.desc}
    +
    + +
    +
    +
    +
    + {#template_dlg.preview} + +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js old mode 100755 new mode 100644 index 0a5275fe..6edf69dc --- a/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js @@ -1,76 +1,76 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.VisualChars', { - init : function(ed, url) { - var t = this; - - t.editor = ed; - - // Register commands - ed.addCommand('mceVisualChars', t._toggleVisualChars, t); - - // Register buttons - ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); - - ed.onBeforeGetContent.add(function(ed, o) { - if (t.state) { - t.state = true; - t._toggleVisualChars(); - } - }); - }, - - getInfo : function() { - return { - longname : 'Visual characters', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - }, - - // Private methods - - _toggleVisualChars : function() { - var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo; - - t.state = !t.state; - ed.controlManager.setActive('visualchars', t.state); - - if (t.state) { - nl = []; - tinymce.walk(b, function(n) { - if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) - nl.push(n); - }, 'childNodes'); - - for (i=0; i$1'); - nv = nv.replace(/\u00a0/g, '\u00b7'); - ed.dom.setOuterHTML(nl[i], nv, d); - } - } else { - nl = tinymce.grep(ed.dom.select('span', b), function(n) { - return ed.dom.hasClass(n, 'mceVisualNbsp'); - }); - - for (i=0; i$1'); + nv = nv.replace(/\u00a0/g, '\u00b7'); + ed.dom.setOuterHTML(nl[i], nv, d); + } + } else { + nl = tinymce.grep(ed.dom.select('span', b), function(n) { + return ed.dom.hasClass(n, 'mceVisualNbsp'); + }); + + for (i=0; i0'); - } else - tinymce.DOM.add(id, 'span', {}, '0'); - }); - - ed.onInit.add(function(ed) { - ed.selection.onSetContent.add(function() { - t._count(ed); - }); - - t._count(ed); - }); - - ed.onSetContent.add(function(ed) { - t._count(ed); - }); - - ed.onKeyUp.add(function(ed, e) { - if (e.keyCode == last) - return; - - if (13 == e.keyCode || 8 == last || 46 == last) - t._count(ed); - - last = e.keyCode; - }); - }, - - _count : function(ed) { - var t = this, tc = 0; - - // Keep multiple calls from happening at the same time - if (t.block) - return; - - t.block = 1; - - setTimeout(function() { - var tx = ed.getContent({format : 'raw'}); - - if (tx) { - tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars - tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation - tx.replace(t.countre, function() {tc++;}); // count the words - } - - tinymce.DOM.setHTML(t.id, tc.toString()); - - setTimeout(function() {t.block = 0;}, 2000); - }, 1); - }, - - getInfo: function() { - return { - longname : 'Word Count plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); -})(); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.WordCount', { + block : 0, + id : null, + countre : null, + cleanre : null, + + init : function(ed, url) { + var t = this, last = 0; + + t.countre = ed.getParam('wordcount_countregex', /\S\s+/g); + t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$'"_+=\\/-]*/g); + t.id = ed.id + '-word-count'; + + ed.onPostRender.add(function(ed, cm) { + var row, id; + + // Add it to the specified id or the theme advanced path + id = ed.getParam('wordcount_target_id'); + if (!id) { + row = tinymce.DOM.get(ed.id + '_path_row'); + + if (row) + tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '0'); + } else + tinymce.DOM.add(id, 'span', {}, '0'); + }); + + ed.onInit.add(function(ed) { + ed.selection.onSetContent.add(function() { + t._count(ed); + }); + + t._count(ed); + }); + + ed.onSetContent.add(function(ed) { + t._count(ed); + }); + + ed.onKeyUp.add(function(ed, e) { + if (e.keyCode == last) + return; + + if (13 == e.keyCode || 8 == last || 46 == last) + t._count(ed); + + last = e.keyCode; + }); + }, + + _count : function(ed) { + var t = this, tc = 0; + + // Keep multiple calls from happening at the same time + if (t.block) + return; + + t.block = 1; + + setTimeout(function() { + var tx = ed.getContent({format : 'raw'}); + + if (tx) { + tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars + tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation + tx.replace(t.countre, function() {tc++;}); // count the words + } + + tinymce.DOM.setHTML(t.id, tc.toString()); + + setTimeout(function() {t.block = 0;}, 2000); + }, 1); + }, + + getInfo: function() { + return { + longname : 'Word Count plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); +})(); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm old mode 100755 new mode 100644 index 3aeac0de..0282ffff --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm @@ -1,141 +1,141 @@ - - - - {#xhtmlxtras_dlg.title_abbr_element} - - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    : - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - - -
    -
    - - + + + + {#xhtmlxtras_dlg.title_abbr_element} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm old mode 100755 new mode 100644 index 31ee7b70..e0ed0314 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -1,141 +1,141 @@ - - - - {#xhtmlxtras_dlg.title_acronym_element} - - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    : - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - - -
    -
    - - + + + + {#xhtmlxtras_dlg.title_acronym_element} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm old mode 100755 new mode 100644 index 17054da3..fc5ba97e --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -1,148 +1,148 @@ - - - - {#xhtmlxtras_dlg.attribs_title} - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.attribute_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.attribute_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - -
    -
    - - + + + + {#xhtmlxtras_dlg.attribs_title} + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm old mode 100755 new mode 100644 index d0a3e3a8..b23becc5 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -1,141 +1,141 @@ - - - - {#xhtmlxtras_dlg.title_cite_element} - - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    : - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - - -
    -
    - - + + + + {#xhtmlxtras_dlg.title_cite_element} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css old mode 100755 new mode 100644 index 9a6a235c..85b1b376 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css @@ -1,11 +1,11 @@ -.panel_wrapper div.current { - height: 290px; -} - -#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { - width: 200px; -} - -#events_panel input { - width: 200px; -} +.panel_wrapper div.current { + height: 290px; +} + +#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css old mode 100755 new mode 100644 index e67114db..034b9852 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css @@ -1,9 +1,9 @@ -input.field, select.field {width:200px;} -input.picker {width:179px; margin-left: 5px;} -input.disabled {border-color:#F2F2F2;} -img.picker {vertical-align:text-bottom; cursor:pointer;} -h1 {padding: 0 0 5px 0;} -.panel_wrapper div.current {height:160px;} -#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} -a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} -#datetime {width:180px;} +input.field, select.field {width:200px;} +input.picker {width:179px; margin-left: 5px;} +input.disabled {border-color:#F2F2F2;} +img.picker {vertical-align:text-bottom; cursor:pointer;} +h1 {padding: 0 0 5px 0;} +.panel_wrapper div.current {height:160px;} +#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} +a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} +#datetime {width:180px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm old mode 100755 new mode 100644 index 8b07fa84..bc809449 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm @@ -1,161 +1,161 @@ - - - - {#xhtmlxtras_dlg.title_del_element} - - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_general_tab} - - - - - - - - - -
    : - - - - - -
    -
    :
    -
    -
    - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    : - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - - -
    -
    - - + + + + {#xhtmlxtras_dlg.title_del_element} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
    : + + + + + +
    +
    :
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js old mode 100755 new mode 100644 index 9b51b836..ceac275a --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -1,144 +1,144 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', { - init : function(ed, url) { - // Register commands - ed.addCommand('mceCite', function() { - ed.windowManager.open({ - file : url + '/cite.htm', - width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)), - height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceAcronym', function() { - ed.windowManager.open({ - file : url + '/acronym.htm', - width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), - height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceAbbr', function() { - ed.windowManager.open({ - file : url + '/abbr.htm', - width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), - height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceDel', function() { - ed.windowManager.open({ - file : url + '/del.htm', - width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), - height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceIns', function() { - ed.windowManager.open({ - file : url + '/ins.htm', - width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), - height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), - inline : 1 - }, { - plugin_url : url - }); - }); - - ed.addCommand('mceAttributes', function() { - ed.windowManager.open({ - file : url + '/attributes.htm', - width : 380, - height : 370, - inline : 1 - }, { - plugin_url : url - }); - }); - - // Register buttons - ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'}); - ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'}); - ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'}); - ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'}); - ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); - ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); - - if (tinymce.isIE) { - function fix(ed, o) { - if (o.set) { - o.content = o.content.replace(/]+)>/gi, ''); - o.content = o.content.replace(/<\/abbr>/gi, ''); - } - }; - - ed.onBeforeSetContent.add(fix); - ed.onPostProcess.add(fix); - } - - ed.onNodeChange.add(function(ed, cm, n, co) { - n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); - - cm.setDisabled('cite', co); - cm.setDisabled('acronym', co); - cm.setDisabled('abbr', co); - cm.setDisabled('del', co); - cm.setDisabled('ins', co); - cm.setDisabled('attribs', n && n.nodeName == 'BODY'); - cm.setActive('cite', 0); - cm.setActive('acronym', 0); - cm.setActive('abbr', 0); - cm.setActive('del', 0); - cm.setActive('ins', 0); - - // Activate all - if (n) { - do { - cm.setDisabled(n.nodeName.toLowerCase(), 0); - cm.setActive(n.nodeName.toLowerCase(), 1); - } while (n = n.parentNode); - } - }); - - ed.onPreInit.add(function() { - // Fixed IE issue where it can't handle these elements correctly - ed.dom.create('abbr'); - }); - }, - - getInfo : function() { - return { - longname : 'XHTML Xtras Plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin); +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceCite', function() { + ed.windowManager.open({ + file : url + '/cite.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAcronym', function() { + ed.windowManager.open({ + file : url + '/acronym.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAbbr', function() { + ed.windowManager.open({ + file : url + '/abbr.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceDel', function() { + ed.windowManager.open({ + file : url + '/del.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceIns', function() { + ed.windowManager.open({ + file : url + '/ins.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAttributes', function() { + ed.windowManager.open({ + file : url + '/attributes.htm', + width : 380, + height : 370, + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'}); + ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'}); + ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'}); + ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'}); + ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); + ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); + + if (tinymce.isIE) { + function fix(ed, o) { + if (o.set) { + o.content = o.content.replace(/]+)>/gi, ''); + o.content = o.content.replace(/<\/abbr>/gi, ''); + } + }; + + ed.onBeforeSetContent.add(fix); + ed.onPostProcess.add(fix); + } + + ed.onNodeChange.add(function(ed, cm, n, co) { + n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); + + cm.setDisabled('cite', co); + cm.setDisabled('acronym', co); + cm.setDisabled('abbr', co); + cm.setDisabled('del', co); + cm.setDisabled('ins', co); + cm.setDisabled('attribs', n && n.nodeName == 'BODY'); + cm.setActive('cite', 0); + cm.setActive('acronym', 0); + cm.setActive('abbr', 0); + cm.setActive('del', 0); + cm.setActive('ins', 0); + + // Activate all + if (n) { + do { + cm.setDisabled(n.nodeName.toLowerCase(), 0); + cm.setActive(n.nodeName.toLowerCase(), 1); + } while (n = n.parentNode); + } + }); + + ed.onPreInit.add(function() { + // Fixed IE issue where it can't handle these elements correctly + ed.dom.create('abbr'); + }); + }, + + getInfo : function() { + return { + longname : 'XHTML Xtras Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm old mode 100755 new mode 100644 index 6c5470cf..9448d67f --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -1,161 +1,161 @@ - - - - {#xhtmlxtras_dlg.title_ins_element} - - - - - - - - - -
    - - -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_general_tab} - - - - - - - - - -
    : - - - - - -
    -
    :
    -
    -
    - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    : - -
    :
    : - -
    : - -
    -
    -
    -
    -
    - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    -
    -
    -
    -
    - - - -
    -
    - - + + + + {#xhtmlxtras_dlg.title_ins_element} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
    : + + + + + +
    +
    :
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js old mode 100755 new mode 100644 index 4b51a257..1790e83d --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js @@ -1,28 +1,28 @@ -/** - * abbr.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('abbr'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAbbr() { - SXE.insertElement('abbr'); - tinyMCEPopup.close(); -} - -function removeAbbr() { - SXE.removeElement('abbr'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); +/** + * abbr.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('abbr'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAbbr() { + SXE.insertElement('abbr'); + tinyMCEPopup.close(); +} + +function removeAbbr() { + SXE.removeElement('abbr'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js old mode 100755 new mode 100644 index 6ec2f887..93b8d259 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js @@ -1,28 +1,28 @@ -/** - * acronym.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('acronym'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAcronym() { - SXE.insertElement('acronym'); - tinyMCEPopup.close(); -} - -function removeAcronym() { - SXE.removeElement('acronym'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); +/** + * acronym.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('acronym'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAcronym() { + SXE.insertElement('acronym'); + tinyMCEPopup.close(); +} + +function removeAcronym() { + SXE.removeElement('acronym'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js old mode 100755 new mode 100644 index d62a219e..c7e0e7fc --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js @@ -1,126 +1,126 @@ -/** - * attributes.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - tinyMCEPopup.resizeToInnerSize(); - var inst = tinyMCEPopup.editor; - var dom = inst.dom; - var elm = inst.selection.getNode(); - var f = document.forms[0]; - var onclick = dom.getAttrib(elm, 'onclick'); - - setFormValue('title', dom.getAttrib(elm, 'title')); - setFormValue('id', dom.getAttrib(elm, 'id')); - setFormValue('style', dom.getAttrib(elm, "style")); - setFormValue('dir', dom.getAttrib(elm, 'dir')); - setFormValue('lang', dom.getAttrib(elm, 'lang')); - setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); - setFormValue('onblur', dom.getAttrib(elm, 'onblur')); - setFormValue('onclick', onclick); - setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); - setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); - setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); - setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); - setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); - setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); - setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); - setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); - setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); - className = dom.getAttrib(elm, 'class'); - - addClassesToList('classlist', 'advlink_styles'); - selectByValue(f, 'classlist', className, true); - - TinyMCE_EditableSelects.init(); -} - -function setFormValue(name, value) { - if(value && document.forms[0].elements[name]){ - document.forms[0].elements[name].value = value; - } -} - -function insertAction() { - var inst = tinyMCEPopup.editor; - var elm = inst.selection.getNode(); - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - setAllAttribs(elm); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); -} - -function setAttrib(elm, attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib.toLowerCase()]; - var inst = tinyMCEPopup.editor; - var dom = inst.dom; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value != "") { - dom.setAttrib(elm, attrib.toLowerCase(), value); - - if (attrib == "style") - attrib = "style.cssText"; - - if (attrib.substring(0, 2) == 'on') - value = 'return true;' + value; - - if (attrib == "class") - attrib = "className"; - - elm[attrib]=value; - } else - elm.removeAttribute(attrib); -} - -function setAllAttribs(elm) { - var f = document.forms[0]; - - setAttrib(elm, 'title'); - setAttrib(elm, 'id'); - setAttrib(elm, 'style'); - setAttrib(elm, 'class', getSelectValue(f, 'classlist')); - setAttrib(elm, 'dir'); - setAttrib(elm, 'lang'); - setAttrib(elm, 'tabindex'); - setAttrib(elm, 'accesskey'); - setAttrib(elm, 'onfocus'); - setAttrib(elm, 'onblur'); - setAttrib(elm, 'onclick'); - setAttrib(elm, 'ondblclick'); - setAttrib(elm, 'onmousedown'); - setAttrib(elm, 'onmouseup'); - setAttrib(elm, 'onmouseover'); - setAttrib(elm, 'onmousemove'); - setAttrib(elm, 'onmouseout'); - setAttrib(elm, 'onkeypress'); - setAttrib(elm, 'onkeydown'); - setAttrib(elm, 'onkeyup'); - - // Refresh in old MSIE -// if (tinyMCE.isMSIE5) -// elm.outerHTML = elm.outerHTML; -} - -function insertAttribute() { - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); -tinyMCEPopup.requireLangPack(); +/** + * attributes.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + tinyMCEPopup.resizeToInnerSize(); + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + var elm = inst.selection.getNode(); + var f = document.forms[0]; + var onclick = dom.getAttrib(elm, 'onclick'); + + setFormValue('title', dom.getAttrib(elm, 'title')); + setFormValue('id', dom.getAttrib(elm, 'id')); + setFormValue('style', dom.getAttrib(elm, "style")); + setFormValue('dir', dom.getAttrib(elm, 'dir')); + setFormValue('lang', dom.getAttrib(elm, 'lang')); + setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', onclick); + setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); + className = dom.getAttrib(elm, 'class'); + + addClassesToList('classlist', 'advlink_styles'); + selectByValue(f, 'classlist', className, true); + + TinyMCE_EditableSelects.init(); +} + +function setFormValue(name, value) { + if(value && document.forms[0].elements[name]){ + document.forms[0].elements[name].value = value; + } +} + +function insertAction() { + var inst = tinyMCEPopup.editor; + var elm = inst.selection.getNode(); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + setAllAttribs(elm); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib.toLowerCase()]; + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + dom.setAttrib(elm, attrib.toLowerCase(), value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib.substring(0, 2) == 'on') + value = 'return true;' + value; + + if (attrib == "class") + attrib = "className"; + + elm[attrib]=value; + } else + elm.removeAttribute(attrib); +} + +function setAllAttribs(elm) { + var f = document.forms[0]; + + setAttrib(elm, 'title'); + setAttrib(elm, 'id'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(f, 'classlist')); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'tabindex'); + setAttrib(elm, 'accesskey'); + setAttrib(elm, 'onfocus'); + setAttrib(elm, 'onblur'); + setAttrib(elm, 'onclick'); + setAttrib(elm, 'ondblclick'); + setAttrib(elm, 'onmousedown'); + setAttrib(elm, 'onmouseup'); + setAttrib(elm, 'onmouseover'); + setAttrib(elm, 'onmousemove'); + setAttrib(elm, 'onmouseout'); + setAttrib(elm, 'onkeypress'); + setAttrib(elm, 'onkeydown'); + setAttrib(elm, 'onkeyup'); + + // Refresh in old MSIE +// if (tinyMCE.isMSIE5) +// elm.outerHTML = elm.outerHTML; +} + +function insertAttribute() { + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js old mode 100755 new mode 100644 index 009b7154..b73ef473 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js @@ -1,28 +1,28 @@ -/** - * cite.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('cite'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertCite() { - SXE.insertElement('cite'); - tinyMCEPopup.close(); -} - -function removeCite() { - SXE.removeElement('cite'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); +/** + * cite.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('cite'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertCite() { + SXE.insertElement('cite'); + tinyMCEPopup.close(); +} + +function removeCite() { + SXE.removeElement('cite'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js old mode 100755 new mode 100644 index 9e5d8c57..d5dd8e43 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js @@ -1,63 +1,63 @@ -/** - * del.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('del'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); -} - -function insertDel() { - var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); - - tinyMCEPopup.execCommand('mceBeginUndoLevel'); - if (elm == null) { - var s = SXE.inst.selection.getContent(); - if(s.length > 0) { - insertInlineElement('del'); - var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); - for (var i=0; i 0) { + insertInlineElement('del'); + var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); + for (var i=0; i 0) { - tagName = element_name; - - insertInlineElement(element_name); - var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); - for (var i=0; i -1) ? true : false; -} - -SXE.removeClass = function(elm,cl) { - if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { - return true; - } - var classNames = elm.className.split(" "); - var newClassNames = ""; - for (var x = 0, cnl = classNames.length; x < cnl; x++) { - if (classNames[x] != cl) { - newClassNames += (classNames[x] + " "); - } - } - elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end -} - -SXE.addClass = function(elm,cl) { - if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; - return true; -} - -function insertInlineElement(en) { - var ed = tinyMCEPopup.editor, dom = ed.dom; - - ed.getDoc().execCommand('FontName', false, 'mceinline'); - tinymce.each(dom.select('span,font'), function(n) { - if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') - dom.replace(dom.create(en, {_mce_new : 1}), n, 1); - }); -} +/** + * element_common.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +tinyMCEPopup.requireLangPack(); + +function initCommonAttributes(elm) { + var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom; + + // Setup form data for common element attributes + setFormValue('title', dom.getAttrib(elm, 'title')); + setFormValue('id', dom.getAttrib(elm, 'id')); + selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true); + setFormValue('style', dom.getAttrib(elm, 'style')); + selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir')); + setFormValue('lang', dom.getAttrib(elm, 'lang')); + setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', dom.getAttrib(elm, 'onclick')); + setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); +} + +function setFormValue(name, value) { + if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value; +} + +function insertDateTime(id) { + document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S"); +} + +function getDateTime(d, fmt) { + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%%", "%"); + + return fmt; +} + +function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; +} + +function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { + if (!form_obj || !form_obj.elements[field_name]) + return; + + var sel = form_obj.elements[field_name]; + + var found = false; + for (var i=0; i 0) { + tagName = element_name; + + insertInlineElement(element_name); + var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); + for (var i=0; i -1) ? true : false; +} + +SXE.removeClass = function(elm,cl) { + if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { + return true; + } + var classNames = elm.className.split(" "); + var newClassNames = ""; + for (var x = 0, cnl = classNames.length; x < cnl; x++) { + if (classNames[x] != cl) { + newClassNames += (classNames[x] + " "); + } + } + elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end +} + +SXE.addClass = function(elm,cl) { + if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; + return true; +} + +function insertInlineElement(en) { + var ed = tinyMCEPopup.editor, dom = ed.dom; + + ed.getDoc().execCommand('FontName', false, 'mceinline'); + tinymce.each(dom.select('span,font'), function(n) { + if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') + dom.replace(dom.create(en, {_mce_new : 1}), n, 1); + }); +} diff --git a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js old mode 100755 new mode 100644 index 3774f0a1..8d29d539 --- a/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +++ b/src/lab/final-build/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js @@ -1,62 +1,62 @@ -/** - * ins.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('ins'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); -} - -function insertIns() { - var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS'); - tinyMCEPopup.execCommand('mceBeginUndoLevel'); - if (elm == null) { - var s = SXE.inst.selection.getContent(); - if(s.length > 0) { - insertInlineElement('INS'); - var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); - for (var i=0; i 0) { + insertInlineElement('INS'); + var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); + for (var i=0; i - - - {#advanced_dlg.about_title} - - - - - - - -
    -
    -

    {#advanced_dlg.about_title}

    -

    Version: ()

    -

    TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL - by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

    -

    Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

    -

    For more information about this software visit the TinyMCE website.

    - -
    - Got Moxie? - Hosted By Sourceforge - Also on freshmeat -
    -
    - -
    -
    -

    {#advanced_dlg.about_loaded}

    - -
    -
    - -

     

    -
    -
    - -
    -
    -
    -
    - -
    - -
    - - + + + + {#advanced_dlg.about_title} + + + + + + + +
    +
    +

    {#advanced_dlg.about_title}

    +

    Version: ()

    +

    TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

    +

    Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

    +

    For more information about this software visit the TinyMCE website.

    + +
    + Got Moxie? + Hosted By Sourceforge + Also on freshmeat +
    +
    + +
    +
    +

    {#advanced_dlg.about_loaded}

    + +
    +
    + +

     

    +
    +
    + +
    +
    +
    +
    + +
    + +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/anchor.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/anchor.htm old mode 100755 new mode 100644 index 2bc63fcf..9c70f9be --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/anchor.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/anchor.htm @@ -1,26 +1,26 @@ - - - - {#advanced_dlg.anchor_title} - - - - -
    - - - - - - - - -
    {#advanced_dlg.anchor_title}
    {#advanced_dlg.anchor_name}:
    - -
    - - -
    -
    - - + + + + {#advanced_dlg.anchor_title} + + + + +
    + + + + + + + + +
    {#advanced_dlg.anchor_title}
    {#advanced_dlg.anchor_name}:
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/charmap.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/charmap.htm old mode 100755 new mode 100644 index 3991b814..c36c2375 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/charmap.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/charmap.htm @@ -1,52 +1,52 @@ - - - - {#advanced_dlg.charmap_title} - - - - - - - - - - - - - - - -
    {#advanced_dlg.charmap_title}
    - - - - - - - - - -
     
     
    -
    - - - - - - - - - - - - - - - - -
    HTML-Code
     
     
    NUM-Code
     
    -
    - - - + + + + {#advanced_dlg.charmap_title} + + + + + + + + + + + + + + + +
    {#advanced_dlg.charmap_title}
    + + + + + + + + + +
     
     
    +
    + + + + + + + + + + + + + + + + +
    HTML-Code
     
     
    NUM-Code
     
    +
    + + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/color_picker.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/color_picker.htm old mode 100755 new mode 100644 index 096e7550..148550fb --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/color_picker.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/color_picker.htm @@ -1,73 +1,73 @@ - - - - {#advanced_dlg.colorpicker_title} - - - - - -
    - - -
    -
    -
    - {#advanced_dlg.colorpicker_picker_title} -
    - - -
    - -
    - -
    -
    -
    -
    - -
    -
    - {#advanced_dlg.colorpicker_palette_title} -
    - -
    - -
    -
    -
    - -
    -
    - {#advanced_dlg.colorpicker_named_title} -
    - -
    - -
    - -
    - {#advanced_dlg.colorpicker_name} -
    -
    -
    -
    - -
    - - -
    - -
    - -
    -
    -
    - - + + + + {#advanced_dlg.colorpicker_title} + + + + + +
    + + +
    +
    +
    + {#advanced_dlg.colorpicker_picker_title} +
    + + +
    + +
    + +
    +
    +
    +
    + +
    +
    + {#advanced_dlg.colorpicker_palette_title} +
    + +
    + +
    +
    +
    + +
    +
    + {#advanced_dlg.colorpicker_named_title} +
    + +
    + +
    + +
    + {#advanced_dlg.colorpicker_name} +
    +
    +
    +
    + +
    + + +
    + +
    + +
    +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template_src.js old mode 100755 new mode 100644 index 53955bd5..23b6a537 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/editor_template_src.js @@ -1,1171 +1,1171 @@ -/** - * editor_template_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function(tinymce) { - var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; - - // Tell it to load theme specific language pack(s) - tinymce.ThemeManager.requireLangPack('advanced'); - - tinymce.create('tinymce.themes.AdvancedTheme', { - sizes : [8, 10, 12, 14, 18, 24, 36], - - // Control name lookup, format: title, command - controls : { - bold : ['bold_desc', 'Bold'], - italic : ['italic_desc', 'Italic'], - underline : ['underline_desc', 'Underline'], - strikethrough : ['striketrough_desc', 'Strikethrough'], - justifyleft : ['justifyleft_desc', 'JustifyLeft'], - justifycenter : ['justifycenter_desc', 'JustifyCenter'], - justifyright : ['justifyright_desc', 'JustifyRight'], - justifyfull : ['justifyfull_desc', 'JustifyFull'], - bullist : ['bullist_desc', 'InsertUnorderedList'], - numlist : ['numlist_desc', 'InsertOrderedList'], - outdent : ['outdent_desc', 'Outdent'], - indent : ['indent_desc', 'Indent'], - cut : ['cut_desc', 'Cut'], - copy : ['copy_desc', 'Copy'], - paste : ['paste_desc', 'Paste'], - undo : ['undo_desc', 'Undo'], - redo : ['redo_desc', 'Redo'], - link : ['link_desc', 'mceLink'], - unlink : ['unlink_desc', 'unlink'], - image : ['image_desc', 'mceImage'], - cleanup : ['cleanup_desc', 'mceCleanup'], - help : ['help_desc', 'mceHelp'], - code : ['code_desc', 'mceCodeEditor'], - hr : ['hr_desc', 'InsertHorizontalRule'], - removeformat : ['removeformat_desc', 'RemoveFormat'], - sub : ['sub_desc', 'subscript'], - sup : ['sup_desc', 'superscript'], - forecolor : ['forecolor_desc', 'ForeColor'], - forecolorpicker : ['forecolor_desc', 'mceForeColor'], - backcolor : ['backcolor_desc', 'HiliteColor'], - backcolorpicker : ['backcolor_desc', 'mceBackColor'], - charmap : ['charmap_desc', 'mceCharMap'], - visualaid : ['visualaid_desc', 'mceToggleVisualAid'], - anchor : ['anchor_desc', 'mceInsertAnchor'], - newdocument : ['newdocument_desc', 'mceNewDocument'], - blockquote : ['blockquote_desc', 'mceBlockQuote'] - }, - - stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], - - init : function(ed, url) { - var t = this, s, v, o; - - t.editor = ed; - t.url = url; - t.onResolveName = new tinymce.util.Dispatcher(this); - - // Default settings - t.settings = s = extend({ - theme_advanced_path : true, - theme_advanced_toolbar_location : 'bottom', - theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect", - theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code", - theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap", - theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", - theme_advanced_toolbar_align : "center", - theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", - theme_advanced_more_colors : 1, - theme_advanced_row_height : 23, - theme_advanced_resize_horizontal : 1, - theme_advanced_resizing_use_cookie : 1, - theme_advanced_font_sizes : "1,2,3,4,5,6,7", - readonly : ed.settings.readonly - }, ed.settings); - - // Setup default font_size_style_values - if (!s.font_size_style_values) - s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; - - if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { - s.font_size_style_values = tinymce.explode(s.font_size_style_values); - s.font_size_classes = tinymce.explode(s.font_size_classes || ''); - - // Parse string value - o = {}; - ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; - each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { - var cl; - - if (k == v && v >= 1 && v <= 7) { - k = v + ' (' + t.sizes[v - 1] + 'pt)'; - cl = s.font_size_classes[v - 1]; - v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); - } - - if (/^\s*\./.test(v)) - cl = v.replace(/\./g, ''); - - o[k] = cl ? {'class' : cl} : {fontSize : v}; - }); - - s.theme_advanced_font_sizes = o; - } - - if ((v = s.theme_advanced_path_location) && v != 'none') - s.theme_advanced_statusbar_location = s.theme_advanced_path_location; - - if (s.theme_advanced_statusbar_location == 'none') - s.theme_advanced_statusbar_location = 0; - - // Init editor - ed.onInit.add(function() { - if (!ed.settings.readonly) - ed.onNodeChange.add(t._nodeChanged, t); - - if (ed.settings.content_css !== false) - ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css")); - }); - - ed.onSetProgressState.add(function(ed, b, ti) { - var co, id = ed.id, tb; - - if (b) { - t.progressTimer = setTimeout(function() { - co = ed.getContainer(); - co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild); - tb = DOM.get(ed.id + '_tbl'); - - DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}}); - DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}}); - }, ti || 0); - } else { - DOM.remove(id + '_blocker'); - DOM.remove(id + '_progress'); - clearTimeout(t.progressTimer); - } - }); - - DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); - - if (s.skin_variant) - DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); - }, - - createControl : function(n, cf) { - var cd, c; - - if (c = cf.createControl(n)) - return c; - - switch (n) { - case "styleselect": - return this._createStyleSelect(); - - case "formatselect": - return this._createBlockFormats(); - - case "fontselect": - return this._createFontSelect(); - - case "fontsizeselect": - return this._createFontSizeSelect(); - - case "forecolor": - return this._createForeColorMenu(); - - case "backcolor": - return this._createBackColorMenu(); - } - - if ((cd = this.controls[n])) - return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]}); - }, - - execCommand : function(cmd, ui, val) { - var f = this['_' + cmd]; - - if (f) { - f.call(this, ui, val); - return true; - } - - return false; - }, - - _importClasses : function(e) { - var ed = this.editor, ctrl = ed.controlManager.get('styleselect'); - - if (ctrl.getLength() == 0) { - each(ed.dom.getClasses(), function(o, idx) { - var name = 'style_' + idx; - - ed.formatter.register(name, { - inline : 'span', - attributes : {'class' : o['class']}, - selector : '*' - }); - - ctrl.add(o['class'], name); - }); - } - }, - - _createStyleSelect : function(n) { - var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl; - - // Setup style select box - ctrl = ctrlMan.createListBox('styleselect', { - title : 'advanced.style_select', - onselect : function(name) { - var matches, formatNames = []; - - each(ctrl.items, function(item) { - formatNames.push(item.value); - }); - - ed.focus(); - - // Toggle off the current format - matches = ed.formatter.matchAll(formatNames); - if (matches[0] == name) - ed.formatter.remove(name); - else - ed.formatter.apply(name); - - return false; // No auto select - } - }); - - // Handle specified format - ed.onInit.add(function() { - var counter = 0, formats = ed.getParam('style_formats'); - - if (formats) { - each(formats, function(fmt) { - var name, keys = 0; - - each(fmt, function() {keys++;}); - - if (keys > 1) { - name = fmt.name = fmt.name || 'style_' + (counter++); - ed.formatter.register(name, fmt); - ctrl.add(fmt.title, name); - } else - ctrl.add(fmt.title); - }); - } else { - each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { - var name; - - if (val) { - name = 'style_' + (counter++); - - ed.formatter.register(name, { - inline : 'span', - classes : val, - selector : '*' - }); - - ctrl.add(t.editor.translate(key), name); - } - }); - } - }); - - // Auto import classes if the ctrl box is empty - if (ctrl.getLength() == 0) { - ctrl.onPostRender.add(function(ed, n) { - if (!ctrl.NativeListBox) { - Event.add(n.id + '_text', 'focus', t._importClasses, t); - Event.add(n.id + '_text', 'mousedown', t._importClasses, t); - Event.add(n.id + '_open', 'focus', t._importClasses, t); - Event.add(n.id + '_open', 'mousedown', t._importClasses, t); - } else - Event.add(n.id, 'focus', t._importClasses, t); - }); - } - - return ctrl; - }, - - _createFontSelect : function() { - var c, t = this, ed = t.editor; - - c = ed.controlManager.createListBox('fontselect', { - title : 'advanced.fontdefault', - onselect : function(v) { - ed.execCommand('FontName', false, v); - return false; // No auto select - } - }); - - if (c) { - each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { - c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); - }); - } - - return c; - }, - - _createFontSizeSelect : function() { - var t = this, ed = t.editor, c, i = 0, cl = []; - - c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { - if (v['class']) { - ed.focus(); - ed.formatter.toggle('fontsize_class', {value : v['class']}); - } else - ed.execCommand('FontSize', false, v.fontSize); - - return false; // No auto select - }}); - - if (c) { - each(t.settings.theme_advanced_font_sizes, function(v, k) { - c.add(k, v); - }); - } - - return c; - }, - - _createBlockFormats : function() { - var c, fmts = { - p : 'advanced.paragraph', - address : 'advanced.address', - pre : 'advanced.pre', - h1 : 'advanced.h1', - h2 : 'advanced.h2', - h3 : 'advanced.h3', - h4 : 'advanced.h4', - h5 : 'advanced.h5', - h6 : 'advanced.h6', - div : 'advanced.div', - blockquote : 'advanced.blockquote', - code : 'advanced.code', - dt : 'advanced.dt', - dd : 'advanced.dd', - samp : 'advanced.samp' - }, t = this; - - c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'}); - if (c) { - each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { - c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); - }); - } - - return c; - }, - - _createForeColorMenu : function() { - var c, t = this, s = t.settings, o = {}, v; - - if (s.theme_advanced_more_colors) { - o.more_colors_func = function() { - t._mceColorPicker(0, { - color : c.value, - func : function(co) { - c.setColor(co); - } - }); - }; - } - - if (v = s.theme_advanced_text_colors) - o.colors = v; - - if (s.theme_advanced_default_foreground_color) - o.default_color = s.theme_advanced_default_foreground_color; - - o.title = 'advanced.forecolor_desc'; - o.cmd = 'ForeColor'; - o.scope = this; - - c = t.editor.controlManager.createColorSplitButton('forecolor', o); - - return c; - }, - - _createBackColorMenu : function() { - var c, t = this, s = t.settings, o = {}, v; - - if (s.theme_advanced_more_colors) { - o.more_colors_func = function() { - t._mceColorPicker(0, { - color : c.value, - func : function(co) { - c.setColor(co); - } - }); - }; - } - - if (v = s.theme_advanced_background_colors) - o.colors = v; - - if (s.theme_advanced_default_background_color) - o.default_color = s.theme_advanced_default_background_color; - - o.title = 'advanced.backcolor_desc'; - o.cmd = 'HiliteColor'; - o.scope = this; - - c = t.editor.controlManager.createColorSplitButton('backcolor', o); - - return c; - }, - - renderUI : function(o) { - var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; - - n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); - - if (!DOM.boxModel) - n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); - - n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); - n = tb = DOM.add(n, 'tbody'); - - switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { - case "rowlayout": - ic = t._rowLayout(s, tb, o); - break; - - case "customlayout": - ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p); - break; - - default: - ic = t._simpleLayout(s, tb, o, p); - } - - n = o.targetNode; - - // Add classes to first and last TRs - nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8 - DOM.addClass(nl[0], 'mceFirst'); - DOM.addClass(nl[nl.length - 1], 'mceLast'); - - // Add classes to first and last TDs - each(DOM.select('tr', tb), function(n) { - DOM.addClass(n.firstChild, 'mceFirst'); - DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast'); - }); - - if (DOM.get(s.theme_advanced_toolbar_container)) - DOM.get(s.theme_advanced_toolbar_container).appendChild(p); - else - DOM.insertAfter(p, n); - - Event.add(ed.id + '_path_row', 'click', function(e) { - e = e.target; - - if (e.nodeName == 'A') { - t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); - - return Event.cancel(e); - } - }); -/* - if (DOM.get(ed.id + '_path_row')) { - Event.add(ed.id + '_tbl', 'mouseover', function(e) { - var re; - - e = e.target; - - if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) { - re = DOM.get(ed.id + '_path_row'); - t.lastPath = re.innerHTML; - DOM.setHTML(re, e.parentNode.title); - } - }); - - Event.add(ed.id + '_tbl', 'mouseout', function(e) { - if (t.lastPath) { - DOM.setHTML(ed.id + '_path_row', t.lastPath); - t.lastPath = 0; - } - }); - } -*/ - - if (!ed.getParam('accessibility_focus')) - Event.add(DOM.add(p, 'a', {href : '#'}, ''), 'focus', function() {tinyMCE.get(ed.id).focus();}); - - if (s.theme_advanced_toolbar_location == 'external') - o.deltaHeight = 0; - - t.deltaHeight = o.deltaHeight; - o.targetNode = null; - - return { - iframeContainer : ic, - editorContainer : ed.id + '_parent', - sizeContainer : sc, - deltaHeight : o.deltaHeight - }; - }, - - getInfo : function() { - return { - longname : 'Advanced theme', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - version : tinymce.majorVersion + "." + tinymce.minorVersion - } - }, - - resizeBy : function(dw, dh) { - var e = DOM.get(this.editor.id + '_tbl'); - - this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); - }, - - resizeTo : function(w, h) { - var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); - - // Boundery fix box - w = Math.max(s.theme_advanced_resizing_min_width || 100, w); - h = Math.max(s.theme_advanced_resizing_min_height || 100, h); - w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w); - h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h); - - // Resize iframe and container - DOM.setStyle(e, 'height', ''); - DOM.setStyle(ifr, 'height', h); - - if (s.theme_advanced_resize_horizontal) { - DOM.setStyle(e, 'width', ''); - DOM.setStyle(ifr, 'width', w); - - // Make sure that the size is never smaller than the over all ui - if (w < e.clientWidth) - DOM.setStyle(ifr, 'width', e.clientWidth); - } - }, - - destroy : function() { - var id = this.editor.id; - - Event.clear(id + '_resize'); - Event.clear(id + '_path_row'); - Event.clear(id + '_external_close'); - }, - - // Internal functions - - _simpleLayout : function(s, tb, o, p) { - var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; - - if (s.readonly) { - n = DOM.add(tb, 'tr'); - n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); - return ic; - } - - // Create toolbar container at top - if (lo == 'top') - t._addToolbars(tb, o); - - // Create external toolbar - if (lo == 'external') { - n = c = DOM.create('div', {style : 'position:relative'}); - n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'}); - DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'}); - n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0}); - etb = DOM.add(n, 'tbody'); - - if (p.firstChild.className == 'mceOldBoxModel') - p.firstChild.appendChild(c); - else - p.insertBefore(c, p.firstChild); - - t._addToolbars(etb, o); - - ed.onMouseUp.add(function() { - var e = DOM.get(ed.id + '_external'); - DOM.show(e); - - DOM.hide(lastExtID); - - var f = Event.add(ed.id + '_external_close', 'click', function() { - DOM.hide(ed.id + '_external'); - Event.remove(ed.id + '_external_close', 'click', f); - }); - - DOM.show(e); - DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1); - - // Fixes IE rendering bug - DOM.hide(e); - DOM.show(e); - e.style.filter = ''; - - lastExtID = ed.id + '_external'; - - e = null; - }); - } - - if (sl == 'top') - t._addStatusBar(tb, o); - - // Create iframe container - if (!s.theme_advanced_toolbar_container) { - n = DOM.add(tb, 'tr'); - n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); - } - - // Create toolbar container at bottom - if (lo == 'bottom') - t._addToolbars(tb, o); - - if (sl == 'bottom') - t._addStatusBar(tb, o); - - return ic; - }, - - _rowLayout : function(s, tb, o) { - var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a; - - dc = s.theme_advanced_containers_default_class || ''; - da = s.theme_advanced_containers_default_align || 'center'; - - each(explode(s.theme_advanced_containers || ''), function(c, i) { - var v = s['theme_advanced_container_' + c] || ''; - - switch (v.toLowerCase()) { - case 'mceeditor': - n = DOM.add(tb, 'tr'); - n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); - break; - - case 'mceelementpath': - t._addStatusBar(tb, o); - break; - - default: - a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); - a = 'mce' + t._ufirst(a); - - n = DOM.add(DOM.add(tb, 'tr'), 'td', { - 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da - }); - - to = cf.createToolbar("toolbar" + i); - t._addControls(v, to); - DOM.setHTML(n, to.renderHTML()); - o.deltaHeight -= s.theme_advanced_row_height; - } - }); - - return ic; - }, - - _addControls : function(v, tb) { - var t = this, s = t.settings, di, cf = t.editor.controlManager; - - if (s.theme_advanced_disable && !t._disabled) { - di = {}; - - each(explode(s.theme_advanced_disable), function(v) { - di[v] = 1; - }); - - t._disabled = di; - } else - di = t._disabled; - - each(explode(v), function(n) { - var c; - - if (di && di[n]) - return; - - // Compatiblity with 2.x - if (n == 'tablecontrols') { - each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) { - n = t.createControl(n, cf); - - if (n) - tb.add(n); - }); - - return; - } - - c = t.createControl(n, cf); - - if (c) - tb.add(c); - }); - }, - - _addToolbars : function(c, o) { - var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a; - - a = s.theme_advanced_toolbar_align.toLowerCase(); - a = 'mce' + t._ufirst(a); - - n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); - - if (!ed.getParam('accessibility_focus')) - h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '')); - - h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '')); - - // Create toolbar and add the controls - for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { - tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i}); - - if (s['theme_advanced_buttons' + i + '_add']) - v += ',' + s['theme_advanced_buttons' + i + '_add']; - - if (s['theme_advanced_buttons' + i + '_add_before']) - v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; - - t._addControls(v, tb); - - //n.appendChild(n = tb.render()); - h.push(tb.renderHTML()); - - o.deltaHeight -= s.theme_advanced_row_height; - } - - h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '')); - DOM.setHTML(n, h.join('')); - }, - - _addStatusBar : function(tb, o) { - var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; - - n = DOM.add(tb, 'tr'); - n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); - n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' '); - DOM.add(n, 'a', {href : '#', accesskey : 'x'}); - - if (s.theme_advanced_resizing) { - DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); - - if (s.theme_advanced_resizing_use_cookie) { - ed.onPostRender.add(function() { - var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl'); - - if (!o) - return; - - t.resizeTo(o.cw, o.ch); - }); - } - - ed.onPostRender.add(function() { - Event.add(ed.id + '_resize', 'mousedown', function(e) { - var mouseMoveHandler1, mouseMoveHandler2, - mouseUpHandler1, mouseUpHandler2, - startX, startY, startWidth, startHeight, width, height, ifrElm; - - function resizeOnMove(e) { - width = startWidth + (e.screenX - startX); - height = startHeight + (e.screenY - startY); - - t.resizeTo(width, height); - }; - - function endResize(e) { - // Stop listening - Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1); - Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2); - Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); - Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); - - // Store away the size - if (s.theme_advanced_resizing_use_cookie) { - Cookie.setHash("TinyMCE_" + ed.id + "_size", { - cw : width, - ch : height - }); - } - }; - - e.preventDefault(); - - // Get the current rect size - startX = e.screenX; - startY = e.screenY; - ifrElm = DOM.get(t.editor.id + '_ifr'); - startWidth = width = ifrElm.clientWidth; - startHeight = height = ifrElm.clientHeight; - - // Register envent handlers - mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove); - mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove); - mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize); - mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize); - }); - }); - } - - o.deltaHeight -= 21; - n = tb = null; - }, - - _nodeChanged : function(ed, cm, n, co, ob) { - var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, formatNames, matches; - - tinymce.each(t.stateControls, function(c) { - cm.setActive(c, ed.queryCommandState(t.controls[c][1])); - }); - - function getParent(name) { - var i, parents = ob.parents, func = name; - - if (typeof(name) == 'string') { - func = function(node) { - return node.nodeName == name; - }; - } - - for (i = 0; i < parents.length; i++) { - if (func(parents[i])) - return parents[i]; - } - }; - - cm.setActive('visualaid', ed.hasVisual); - cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing); - cm.setDisabled('redo', !ed.undoManager.hasRedo()); - cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); - - p = getParent('A'); - if (c = cm.get('link')) { - if (!p || !p.name) { - c.setDisabled(!p && co); - c.setActive(!!p); - } - } - - if (c = cm.get('unlink')) { - c.setDisabled(!p && co); - c.setActive(!!p && !p.name); - } - - if (c = cm.get('anchor')) { - c.setActive(!!p && p.name); - } - - p = getParent('IMG'); - if (c = cm.get('image')) - c.setActive(!!p && n.className.indexOf('mceItem') == -1); - - if (c = cm.get('styleselect')) { - t._importClasses(); - - formatNames = []; - each(c.items, function(item) { - formatNames.push(item.value); - }); - - matches = ed.formatter.matchAll(formatNames); - c.select(matches[0]); - } - - if (c = cm.get('formatselect')) { - p = getParent(DOM.isBlock); - - if (p) - c.select(p.nodeName.toLowerCase()); - } - - // Find out current fontSize, fontFamily and fontClass - getParent(function(n) { - if (n.nodeName === 'SPAN') { - if (!cl && n.className) - cl = n.className; - - if (!fz && n.style.fontSize) - fz = n.style.fontSize; - - if (!fn && n.style.fontFamily) - fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); - } - - return false; - }); - - if (c = cm.get('fontselect')) { - c.select(function(v) { - return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; - }); - } - - // Select font size - if (c = cm.get('fontsizeselect')) { - // Use computed style - if (s.theme_advanced_runtime_fontsize && !fz && !cl) - fz = ed.dom.getStyle(n, 'fontSize', true); - - c.select(function(v) { - if (v.fontSize && v.fontSize === fz) - return true; - - if (v['class'] && v['class'] === cl) - return true; - }); - } - - if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { - p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); - DOM.setHTML(p, ''); - - getParent(function(n) { - var na = n.nodeName.toLowerCase(), u, pi, ti = ''; - - /*if (n.getAttribute('_mce_bogus')) - return; -*/ - // Ignore non element and hidden elements - if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) - return; - - // Fake name - if (v = DOM.getAttrib(n, 'mce_name')) - na = v; - - // Handle prefix - if (tinymce.isIE && n.scopeName !== 'HTML') - na = n.scopeName + ':' + na; - - // Remove internal prefix - na = na.replace(/mce\:/g, ''); - - // Handle node name - switch (na) { - case 'b': - na = 'strong'; - break; - - case 'i': - na = 'em'; - break; - - case 'img': - if (v = DOM.getAttrib(n, 'src')) - ti += 'src: ' + v + ' '; - - break; - - case 'a': - if (v = DOM.getAttrib(n, 'name')) { - ti += 'name: ' + v + ' '; - na += '#' + v; - } - - if (v = DOM.getAttrib(n, 'href')) - ti += 'href: ' + v + ' '; - - break; - - case 'font': - if (v = DOM.getAttrib(n, 'face')) - ti += 'font: ' + v + ' '; - - if (v = DOM.getAttrib(n, 'size')) - ti += 'size: ' + v + ' '; - - if (v = DOM.getAttrib(n, 'color')) - ti += 'color: ' + v + ' '; - - break; - - case 'span': - if (v = DOM.getAttrib(n, 'style')) - ti += 'style: ' + v + ' '; - - break; - } - - if (v = DOM.getAttrib(n, 'id')) - ti += 'id: ' + v + ' '; - - if (v = n.className) { - v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '') - - if (v) { - ti += 'class: ' + v + ' '; - - if (DOM.isBlock(n) || na == 'img' || na == 'span') - na += '.' + v; - } - } - - na = na.replace(/(html:)/g, ''); - na = {name : na, node : n, title : ti}; - t.onResolveName.dispatch(t, na); - ti = na.title; - na = na.name; - - //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; - pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); - - if (p.hasChildNodes()) { - p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild); - p.insertBefore(pi, p.firstChild); - } else - p.appendChild(pi); - }, ed.getBody()); - } - }, - - // Commands gets called by execCommand - - _sel : function(v) { - this.editor.execCommand('mceSelectNodeDepth', false, v); - }, - - _mceInsertAnchor : function(ui, v) { - var ed = this.editor; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/anchor.htm', - width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), - height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), - inline : true - }, { - theme_url : this.url - }); - }, - - _mceCharMap : function() { - var ed = this.editor; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/charmap.htm', - width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), - height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), - inline : true - }, { - theme_url : this.url - }); - }, - - _mceHelp : function() { - var ed = this.editor; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/about.htm', - width : 480, - height : 380, - inline : true - }, { - theme_url : this.url - }); - }, - - _mceColorPicker : function(u, v) { - var ed = this.editor; - - v = v || {}; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/color_picker.htm', - width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), - height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), - close_previous : false, - inline : true - }, { - input_color : v.color, - func : v.func, - theme_url : this.url - }); - }, - - _mceCodeEditor : function(ui, val) { - var ed = this.editor; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/source_editor.htm', - width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), - height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), - inline : true, - resizable : true, - maximizable : true - }, { - theme_url : this.url - }); - }, - - _mceImage : function(ui, val) { - var ed = this.editor; - - // Internal image object like a flash placeholder - if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) - return; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/image.htm', - width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), - height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), - inline : true - }, { - theme_url : this.url - }); - }, - - _mceLink : function(ui, val) { - var ed = this.editor; - - ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/link.htm', - width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), - height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), - inline : true - }, { - theme_url : this.url - }); - }, - - _mceNewDocument : function() { - var ed = this.editor; - - ed.windowManager.confirm('advanced.newdocument', function(s) { - if (s) - ed.execCommand('mceSetContent', false, ''); - }); - }, - - _mceForeColor : function() { - var t = this; - - this._mceColorPicker(0, { - color: t.fgColor, - func : function(co) { - t.fgColor = co; - t.editor.execCommand('ForeColor', false, co); - } - }); - }, - - _mceBackColor : function() { - var t = this; - - this._mceColorPicker(0, { - color: t.bgColor, - func : function(co) { - t.bgColor = co; - t.editor.execCommand('HiliteColor', false, co); - } - }); - }, - - _ufirst : function(s) { - return s.substring(0, 1).toUpperCase() + s.substring(1); - } - }); - - tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); +/** + * editor_template_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; + + // Tell it to load theme specific language pack(s) + tinymce.ThemeManager.requireLangPack('advanced'); + + tinymce.create('tinymce.themes.AdvancedTheme', { + sizes : [8, 10, 12, 14, 18, 24, 36], + + // Control name lookup, format: title, command + controls : { + bold : ['bold_desc', 'Bold'], + italic : ['italic_desc', 'Italic'], + underline : ['underline_desc', 'Underline'], + strikethrough : ['striketrough_desc', 'Strikethrough'], + justifyleft : ['justifyleft_desc', 'JustifyLeft'], + justifycenter : ['justifycenter_desc', 'JustifyCenter'], + justifyright : ['justifyright_desc', 'JustifyRight'], + justifyfull : ['justifyfull_desc', 'JustifyFull'], + bullist : ['bullist_desc', 'InsertUnorderedList'], + numlist : ['numlist_desc', 'InsertOrderedList'], + outdent : ['outdent_desc', 'Outdent'], + indent : ['indent_desc', 'Indent'], + cut : ['cut_desc', 'Cut'], + copy : ['copy_desc', 'Copy'], + paste : ['paste_desc', 'Paste'], + undo : ['undo_desc', 'Undo'], + redo : ['redo_desc', 'Redo'], + link : ['link_desc', 'mceLink'], + unlink : ['unlink_desc', 'unlink'], + image : ['image_desc', 'mceImage'], + cleanup : ['cleanup_desc', 'mceCleanup'], + help : ['help_desc', 'mceHelp'], + code : ['code_desc', 'mceCodeEditor'], + hr : ['hr_desc', 'InsertHorizontalRule'], + removeformat : ['removeformat_desc', 'RemoveFormat'], + sub : ['sub_desc', 'subscript'], + sup : ['sup_desc', 'superscript'], + forecolor : ['forecolor_desc', 'ForeColor'], + forecolorpicker : ['forecolor_desc', 'mceForeColor'], + backcolor : ['backcolor_desc', 'HiliteColor'], + backcolorpicker : ['backcolor_desc', 'mceBackColor'], + charmap : ['charmap_desc', 'mceCharMap'], + visualaid : ['visualaid_desc', 'mceToggleVisualAid'], + anchor : ['anchor_desc', 'mceInsertAnchor'], + newdocument : ['newdocument_desc', 'mceNewDocument'], + blockquote : ['blockquote_desc', 'mceBlockQuote'] + }, + + stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], + + init : function(ed, url) { + var t = this, s, v, o; + + t.editor = ed; + t.url = url; + t.onResolveName = new tinymce.util.Dispatcher(this); + + // Default settings + t.settings = s = extend({ + theme_advanced_path : true, + theme_advanced_toolbar_location : 'bottom', + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap", + theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", + theme_advanced_toolbar_align : "center", + theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", + theme_advanced_more_colors : 1, + theme_advanced_row_height : 23, + theme_advanced_resize_horizontal : 1, + theme_advanced_resizing_use_cookie : 1, + theme_advanced_font_sizes : "1,2,3,4,5,6,7", + readonly : ed.settings.readonly + }, ed.settings); + + // Setup default font_size_style_values + if (!s.font_size_style_values) + s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; + + if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { + s.font_size_style_values = tinymce.explode(s.font_size_style_values); + s.font_size_classes = tinymce.explode(s.font_size_classes || ''); + + // Parse string value + o = {}; + ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; + each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { + var cl; + + if (k == v && v >= 1 && v <= 7) { + k = v + ' (' + t.sizes[v - 1] + 'pt)'; + cl = s.font_size_classes[v - 1]; + v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); + } + + if (/^\s*\./.test(v)) + cl = v.replace(/\./g, ''); + + o[k] = cl ? {'class' : cl} : {fontSize : v}; + }); + + s.theme_advanced_font_sizes = o; + } + + if ((v = s.theme_advanced_path_location) && v != 'none') + s.theme_advanced_statusbar_location = s.theme_advanced_path_location; + + if (s.theme_advanced_statusbar_location == 'none') + s.theme_advanced_statusbar_location = 0; + + // Init editor + ed.onInit.add(function() { + if (!ed.settings.readonly) + ed.onNodeChange.add(t._nodeChanged, t); + + if (ed.settings.content_css !== false) + ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css")); + }); + + ed.onSetProgressState.add(function(ed, b, ti) { + var co, id = ed.id, tb; + + if (b) { + t.progressTimer = setTimeout(function() { + co = ed.getContainer(); + co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild); + tb = DOM.get(ed.id + '_tbl'); + + DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}}); + DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}}); + }, ti || 0); + } else { + DOM.remove(id + '_blocker'); + DOM.remove(id + '_progress'); + clearTimeout(t.progressTimer); + } + }); + + DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); + + if (s.skin_variant) + DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); + }, + + createControl : function(n, cf) { + var cd, c; + + if (c = cf.createControl(n)) + return c; + + switch (n) { + case "styleselect": + return this._createStyleSelect(); + + case "formatselect": + return this._createBlockFormats(); + + case "fontselect": + return this._createFontSelect(); + + case "fontsizeselect": + return this._createFontSizeSelect(); + + case "forecolor": + return this._createForeColorMenu(); + + case "backcolor": + return this._createBackColorMenu(); + } + + if ((cd = this.controls[n])) + return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]}); + }, + + execCommand : function(cmd, ui, val) { + var f = this['_' + cmd]; + + if (f) { + f.call(this, ui, val); + return true; + } + + return false; + }, + + _importClasses : function(e) { + var ed = this.editor, ctrl = ed.controlManager.get('styleselect'); + + if (ctrl.getLength() == 0) { + each(ed.dom.getClasses(), function(o, idx) { + var name = 'style_' + idx; + + ed.formatter.register(name, { + inline : 'span', + attributes : {'class' : o['class']}, + selector : '*' + }); + + ctrl.add(o['class'], name); + }); + } + }, + + _createStyleSelect : function(n) { + var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl; + + // Setup style select box + ctrl = ctrlMan.createListBox('styleselect', { + title : 'advanced.style_select', + onselect : function(name) { + var matches, formatNames = []; + + each(ctrl.items, function(item) { + formatNames.push(item.value); + }); + + ed.focus(); + + // Toggle off the current format + matches = ed.formatter.matchAll(formatNames); + if (matches[0] == name) + ed.formatter.remove(name); + else + ed.formatter.apply(name); + + return false; // No auto select + } + }); + + // Handle specified format + ed.onInit.add(function() { + var counter = 0, formats = ed.getParam('style_formats'); + + if (formats) { + each(formats, function(fmt) { + var name, keys = 0; + + each(fmt, function() {keys++;}); + + if (keys > 1) { + name = fmt.name = fmt.name || 'style_' + (counter++); + ed.formatter.register(name, fmt); + ctrl.add(fmt.title, name); + } else + ctrl.add(fmt.title); + }); + } else { + each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { + var name; + + if (val) { + name = 'style_' + (counter++); + + ed.formatter.register(name, { + inline : 'span', + classes : val, + selector : '*' + }); + + ctrl.add(t.editor.translate(key), name); + } + }); + } + }); + + // Auto import classes if the ctrl box is empty + if (ctrl.getLength() == 0) { + ctrl.onPostRender.add(function(ed, n) { + if (!ctrl.NativeListBox) { + Event.add(n.id + '_text', 'focus', t._importClasses, t); + Event.add(n.id + '_text', 'mousedown', t._importClasses, t); + Event.add(n.id + '_open', 'focus', t._importClasses, t); + Event.add(n.id + '_open', 'mousedown', t._importClasses, t); + } else + Event.add(n.id, 'focus', t._importClasses, t); + }); + } + + return ctrl; + }, + + _createFontSelect : function() { + var c, t = this, ed = t.editor; + + c = ed.controlManager.createListBox('fontselect', { + title : 'advanced.fontdefault', + onselect : function(v) { + ed.execCommand('FontName', false, v); + return false; // No auto select + } + }); + + if (c) { + each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { + c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); + }); + } + + return c; + }, + + _createFontSizeSelect : function() { + var t = this, ed = t.editor, c, i = 0, cl = []; + + c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { + if (v['class']) { + ed.focus(); + ed.formatter.toggle('fontsize_class', {value : v['class']}); + } else + ed.execCommand('FontSize', false, v.fontSize); + + return false; // No auto select + }}); + + if (c) { + each(t.settings.theme_advanced_font_sizes, function(v, k) { + c.add(k, v); + }); + } + + return c; + }, + + _createBlockFormats : function() { + var c, fmts = { + p : 'advanced.paragraph', + address : 'advanced.address', + pre : 'advanced.pre', + h1 : 'advanced.h1', + h2 : 'advanced.h2', + h3 : 'advanced.h3', + h4 : 'advanced.h4', + h5 : 'advanced.h5', + h6 : 'advanced.h6', + div : 'advanced.div', + blockquote : 'advanced.blockquote', + code : 'advanced.code', + dt : 'advanced.dt', + dd : 'advanced.dd', + samp : 'advanced.samp' + }, t = this; + + c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'}); + if (c) { + each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { + c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); + }); + } + + return c; + }, + + _createForeColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_text_colors) + o.colors = v; + + if (s.theme_advanced_default_foreground_color) + o.default_color = s.theme_advanced_default_foreground_color; + + o.title = 'advanced.forecolor_desc'; + o.cmd = 'ForeColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('forecolor', o); + + return c; + }, + + _createBackColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_background_colors) + o.colors = v; + + if (s.theme_advanced_default_background_color) + o.default_color = s.theme_advanced_default_background_color; + + o.title = 'advanced.backcolor_desc'; + o.cmd = 'HiliteColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('backcolor', o); + + return c; + }, + + renderUI : function(o) { + var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; + + n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); + + if (!DOM.boxModel) + n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); + + n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); + n = tb = DOM.add(n, 'tbody'); + + switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { + case "rowlayout": + ic = t._rowLayout(s, tb, o); + break; + + case "customlayout": + ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p); + break; + + default: + ic = t._simpleLayout(s, tb, o, p); + } + + n = o.targetNode; + + // Add classes to first and last TRs + nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8 + DOM.addClass(nl[0], 'mceFirst'); + DOM.addClass(nl[nl.length - 1], 'mceLast'); + + // Add classes to first and last TDs + each(DOM.select('tr', tb), function(n) { + DOM.addClass(n.firstChild, 'mceFirst'); + DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast'); + }); + + if (DOM.get(s.theme_advanced_toolbar_container)) + DOM.get(s.theme_advanced_toolbar_container).appendChild(p); + else + DOM.insertAfter(p, n); + + Event.add(ed.id + '_path_row', 'click', function(e) { + e = e.target; + + if (e.nodeName == 'A') { + t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); + + return Event.cancel(e); + } + }); +/* + if (DOM.get(ed.id + '_path_row')) { + Event.add(ed.id + '_tbl', 'mouseover', function(e) { + var re; + + e = e.target; + + if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) { + re = DOM.get(ed.id + '_path_row'); + t.lastPath = re.innerHTML; + DOM.setHTML(re, e.parentNode.title); + } + }); + + Event.add(ed.id + '_tbl', 'mouseout', function(e) { + if (t.lastPath) { + DOM.setHTML(ed.id + '_path_row', t.lastPath); + t.lastPath = 0; + } + }); + } +*/ + + if (!ed.getParam('accessibility_focus')) + Event.add(DOM.add(p, 'a', {href : '#'}, ''), 'focus', function() {tinyMCE.get(ed.id).focus();}); + + if (s.theme_advanced_toolbar_location == 'external') + o.deltaHeight = 0; + + t.deltaHeight = o.deltaHeight; + o.targetNode = null; + + return { + iframeContainer : ic, + editorContainer : ed.id + '_parent', + sizeContainer : sc, + deltaHeight : o.deltaHeight + }; + }, + + getInfo : function() { + return { + longname : 'Advanced theme', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + version : tinymce.majorVersion + "." + tinymce.minorVersion + } + }, + + resizeBy : function(dw, dh) { + var e = DOM.get(this.editor.id + '_tbl'); + + this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); + }, + + resizeTo : function(w, h) { + var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); + + // Boundery fix box + w = Math.max(s.theme_advanced_resizing_min_width || 100, w); + h = Math.max(s.theme_advanced_resizing_min_height || 100, h); + w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w); + h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h); + + // Resize iframe and container + DOM.setStyle(e, 'height', ''); + DOM.setStyle(ifr, 'height', h); + + if (s.theme_advanced_resize_horizontal) { + DOM.setStyle(e, 'width', ''); + DOM.setStyle(ifr, 'width', w); + + // Make sure that the size is never smaller than the over all ui + if (w < e.clientWidth) + DOM.setStyle(ifr, 'width', e.clientWidth); + } + }, + + destroy : function() { + var id = this.editor.id; + + Event.clear(id + '_resize'); + Event.clear(id + '_path_row'); + Event.clear(id + '_external_close'); + }, + + // Internal functions + + _simpleLayout : function(s, tb, o, p) { + var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; + + if (s.readonly) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + return ic; + } + + // Create toolbar container at top + if (lo == 'top') + t._addToolbars(tb, o); + + // Create external toolbar + if (lo == 'external') { + n = c = DOM.create('div', {style : 'position:relative'}); + n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'}); + DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'}); + n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0}); + etb = DOM.add(n, 'tbody'); + + if (p.firstChild.className == 'mceOldBoxModel') + p.firstChild.appendChild(c); + else + p.insertBefore(c, p.firstChild); + + t._addToolbars(etb, o); + + ed.onMouseUp.add(function() { + var e = DOM.get(ed.id + '_external'); + DOM.show(e); + + DOM.hide(lastExtID); + + var f = Event.add(ed.id + '_external_close', 'click', function() { + DOM.hide(ed.id + '_external'); + Event.remove(ed.id + '_external_close', 'click', f); + }); + + DOM.show(e); + DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1); + + // Fixes IE rendering bug + DOM.hide(e); + DOM.show(e); + e.style.filter = ''; + + lastExtID = ed.id + '_external'; + + e = null; + }); + } + + if (sl == 'top') + t._addStatusBar(tb, o); + + // Create iframe container + if (!s.theme_advanced_toolbar_container) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + } + + // Create toolbar container at bottom + if (lo == 'bottom') + t._addToolbars(tb, o); + + if (sl == 'bottom') + t._addStatusBar(tb, o); + + return ic; + }, + + _rowLayout : function(s, tb, o) { + var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a; + + dc = s.theme_advanced_containers_default_class || ''; + da = s.theme_advanced_containers_default_align || 'center'; + + each(explode(s.theme_advanced_containers || ''), function(c, i) { + var v = s['theme_advanced_container_' + c] || ''; + + switch (v.toLowerCase()) { + case 'mceeditor': + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + break; + + case 'mceelementpath': + t._addStatusBar(tb, o); + break; + + default: + a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(tb, 'tr'), 'td', { + 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da + }); + + to = cf.createToolbar("toolbar" + i); + t._addControls(v, to); + DOM.setHTML(n, to.renderHTML()); + o.deltaHeight -= s.theme_advanced_row_height; + } + }); + + return ic; + }, + + _addControls : function(v, tb) { + var t = this, s = t.settings, di, cf = t.editor.controlManager; + + if (s.theme_advanced_disable && !t._disabled) { + di = {}; + + each(explode(s.theme_advanced_disable), function(v) { + di[v] = 1; + }); + + t._disabled = di; + } else + di = t._disabled; + + each(explode(v), function(n) { + var c; + + if (di && di[n]) + return; + + // Compatiblity with 2.x + if (n == 'tablecontrols') { + each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) { + n = t.createControl(n, cf); + + if (n) + tb.add(n); + }); + + return; + } + + c = t.createControl(n, cf); + + if (c) + tb.add(c); + }); + }, + + _addToolbars : function(c, o) { + var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a; + + a = s.theme_advanced_toolbar_align.toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); + + if (!ed.getParam('accessibility_focus')) + h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '')); + + h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '')); + + // Create toolbar and add the controls + for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { + tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i}); + + if (s['theme_advanced_buttons' + i + '_add']) + v += ',' + s['theme_advanced_buttons' + i + '_add']; + + if (s['theme_advanced_buttons' + i + '_add_before']) + v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; + + t._addControls(v, tb); + + //n.appendChild(n = tb.render()); + h.push(tb.renderHTML()); + + o.deltaHeight -= s.theme_advanced_row_height; + } + + h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '')); + DOM.setHTML(n, h.join('')); + }, + + _addStatusBar : function(tb, o) { + var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; + + n = DOM.add(tb, 'tr'); + n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); + n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' '); + DOM.add(n, 'a', {href : '#', accesskey : 'x'}); + + if (s.theme_advanced_resizing) { + DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); + + if (s.theme_advanced_resizing_use_cookie) { + ed.onPostRender.add(function() { + var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl'); + + if (!o) + return; + + t.resizeTo(o.cw, o.ch); + }); + } + + ed.onPostRender.add(function() { + Event.add(ed.id + '_resize', 'mousedown', function(e) { + var mouseMoveHandler1, mouseMoveHandler2, + mouseUpHandler1, mouseUpHandler2, + startX, startY, startWidth, startHeight, width, height, ifrElm; + + function resizeOnMove(e) { + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + + t.resizeTo(width, height); + }; + + function endResize(e) { + // Stop listening + Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1); + Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2); + Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); + Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); + + // Store away the size + if (s.theme_advanced_resizing_use_cookie) { + Cookie.setHash("TinyMCE_" + ed.id + "_size", { + cw : width, + ch : height + }); + } + }; + + e.preventDefault(); + + // Get the current rect size + startX = e.screenX; + startY = e.screenY; + ifrElm = DOM.get(t.editor.id + '_ifr'); + startWidth = width = ifrElm.clientWidth; + startHeight = height = ifrElm.clientHeight; + + // Register envent handlers + mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove); + mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove); + mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize); + mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize); + }); + }); + } + + o.deltaHeight -= 21; + n = tb = null; + }, + + _nodeChanged : function(ed, cm, n, co, ob) { + var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, formatNames, matches; + + tinymce.each(t.stateControls, function(c) { + cm.setActive(c, ed.queryCommandState(t.controls[c][1])); + }); + + function getParent(name) { + var i, parents = ob.parents, func = name; + + if (typeof(name) == 'string') { + func = function(node) { + return node.nodeName == name; + }; + } + + for (i = 0; i < parents.length; i++) { + if (func(parents[i])) + return parents[i]; + } + }; + + cm.setActive('visualaid', ed.hasVisual); + cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing); + cm.setDisabled('redo', !ed.undoManager.hasRedo()); + cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); + + p = getParent('A'); + if (c = cm.get('link')) { + if (!p || !p.name) { + c.setDisabled(!p && co); + c.setActive(!!p); + } + } + + if (c = cm.get('unlink')) { + c.setDisabled(!p && co); + c.setActive(!!p && !p.name); + } + + if (c = cm.get('anchor')) { + c.setActive(!!p && p.name); + } + + p = getParent('IMG'); + if (c = cm.get('image')) + c.setActive(!!p && n.className.indexOf('mceItem') == -1); + + if (c = cm.get('styleselect')) { + t._importClasses(); + + formatNames = []; + each(c.items, function(item) { + formatNames.push(item.value); + }); + + matches = ed.formatter.matchAll(formatNames); + c.select(matches[0]); + } + + if (c = cm.get('formatselect')) { + p = getParent(DOM.isBlock); + + if (p) + c.select(p.nodeName.toLowerCase()); + } + + // Find out current fontSize, fontFamily and fontClass + getParent(function(n) { + if (n.nodeName === 'SPAN') { + if (!cl && n.className) + cl = n.className; + + if (!fz && n.style.fontSize) + fz = n.style.fontSize; + + if (!fn && n.style.fontFamily) + fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); + } + + return false; + }); + + if (c = cm.get('fontselect')) { + c.select(function(v) { + return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; + }); + } + + // Select font size + if (c = cm.get('fontsizeselect')) { + // Use computed style + if (s.theme_advanced_runtime_fontsize && !fz && !cl) + fz = ed.dom.getStyle(n, 'fontSize', true); + + c.select(function(v) { + if (v.fontSize && v.fontSize === fz) + return true; + + if (v['class'] && v['class'] === cl) + return true; + }); + } + + if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { + p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); + DOM.setHTML(p, ''); + + getParent(function(n) { + var na = n.nodeName.toLowerCase(), u, pi, ti = ''; + + /*if (n.getAttribute('_mce_bogus')) + return; +*/ + // Ignore non element and hidden elements + if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) + return; + + // Fake name + if (v = DOM.getAttrib(n, 'mce_name')) + na = v; + + // Handle prefix + if (tinymce.isIE && n.scopeName !== 'HTML') + na = n.scopeName + ':' + na; + + // Remove internal prefix + na = na.replace(/mce\:/g, ''); + + // Handle node name + switch (na) { + case 'b': + na = 'strong'; + break; + + case 'i': + na = 'em'; + break; + + case 'img': + if (v = DOM.getAttrib(n, 'src')) + ti += 'src: ' + v + ' '; + + break; + + case 'a': + if (v = DOM.getAttrib(n, 'name')) { + ti += 'name: ' + v + ' '; + na += '#' + v; + } + + if (v = DOM.getAttrib(n, 'href')) + ti += 'href: ' + v + ' '; + + break; + + case 'font': + if (v = DOM.getAttrib(n, 'face')) + ti += 'font: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'size')) + ti += 'size: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'color')) + ti += 'color: ' + v + ' '; + + break; + + case 'span': + if (v = DOM.getAttrib(n, 'style')) + ti += 'style: ' + v + ' '; + + break; + } + + if (v = DOM.getAttrib(n, 'id')) + ti += 'id: ' + v + ' '; + + if (v = n.className) { + v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '') + + if (v) { + ti += 'class: ' + v + ' '; + + if (DOM.isBlock(n) || na == 'img' || na == 'span') + na += '.' + v; + } + } + + na = na.replace(/(html:)/g, ''); + na = {name : na, node : n, title : ti}; + t.onResolveName.dispatch(t, na); + ti = na.title; + na = na.name; + + //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; + pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); + + if (p.hasChildNodes()) { + p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild); + p.insertBefore(pi, p.firstChild); + } else + p.appendChild(pi); + }, ed.getBody()); + } + }, + + // Commands gets called by execCommand + + _sel : function(v) { + this.editor.execCommand('mceSelectNodeDepth', false, v); + }, + + _mceInsertAnchor : function(ui, v) { + var ed = this.editor; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/anchor.htm', + width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), + height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceCharMap : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/charmap.htm', + width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceHelp : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/about.htm', + width : 480, + height : 380, + inline : true + }, { + theme_url : this.url + }); + }, + + _mceColorPicker : function(u, v) { + var ed = this.editor; + + v = v || {}; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/color_picker.htm', + width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), + close_previous : false, + inline : true + }, { + input_color : v.color, + func : v.func, + theme_url : this.url + }); + }, + + _mceCodeEditor : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/source_editor.htm', + width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), + height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), + inline : true, + resizable : true, + maximizable : true + }, { + theme_url : this.url + }); + }, + + _mceImage : function(ui, val) { + var ed = this.editor; + + // Internal image object like a flash placeholder + if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + return; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/image.htm', + width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), + height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceLink : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : tinymce.baseURL + '/themes/advanced/link.htm', + width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), + height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceNewDocument : function() { + var ed = this.editor; + + ed.windowManager.confirm('advanced.newdocument', function(s) { + if (s) + ed.execCommand('mceSetContent', false, ''); + }); + }, + + _mceForeColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.fgColor, + func : function(co) { + t.fgColor = co; + t.editor.execCommand('ForeColor', false, co); + } + }); + }, + + _mceBackColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.bgColor, + func : function(co) { + t.bgColor = co; + t.editor.execCommand('HiliteColor', false, co); + } + }); + }, + + _ufirst : function(s) { + return s.substring(0, 1).toUpperCase() + s.substring(1); + } + }); + + tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); }(tinymce)); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/image.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/image.htm old mode 100755 new mode 100644 index f30d6706..98fd2cd0 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/image.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/image.htm @@ -1,80 +1,80 @@ - - - - {#advanced_dlg.image_title} - - - - - - -
    - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    - x -
    -
    -
    - -
    - - -
    -
    - - + + + + {#advanced_dlg.image_title} + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    + x +
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/img/icons.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/img/icons.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/about.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/about.js old mode 100755 new mode 100644 index 5cee9ed8..7fc8ba2a --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/about.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/about.js @@ -1,72 +1,72 @@ -tinyMCEPopup.requireLangPack(); - -function init() { - var ed, tcont; - - tinyMCEPopup.resizeToInnerSize(); - ed = tinyMCEPopup.editor; - - // Give FF some time - window.setTimeout(insertHelpIFrame, 10); - - tcont = document.getElementById('plugintablecontainer'); - document.getElementById('plugins_tab').style.display = 'none'; - - var html = ""; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - - tinymce.each(ed.plugins, function(p, n) { - var info; - - if (!p.getInfo) - return; - - html += ''; - - info = p.getInfo(); - - if (info.infourl != null && info.infourl != '') - html += ''; - else - html += ''; - - if (info.authorurl != null && info.authorurl != '') - html += ''; - else - html += ''; - - html += ''; - html += ''; - - document.getElementById('plugins_tab').style.display = ''; - - }); - - html += ''; - html += '
    ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
    ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
    '; - - tcont.innerHTML = html; - - tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; - tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; -} - -function insertHelpIFrame() { - var html; - - if (tinyMCEPopup.getParam('docs_url')) { - html = ''; - document.getElementById('iframecontainer').innerHTML = html; - document.getElementById('help_tab').style.display = 'block'; - } -} - -tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); + +function init() { + var ed, tcont; + + tinyMCEPopup.resizeToInnerSize(); + ed = tinyMCEPopup.editor; + + // Give FF some time + window.setTimeout(insertHelpIFrame, 10); + + tcont = document.getElementById('plugintablecontainer'); + document.getElementById('plugins_tab').style.display = 'none'; + + var html = ""; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + tinymce.each(ed.plugins, function(p, n) { + var info; + + if (!p.getInfo) + return; + + html += ''; + + info = p.getInfo(); + + if (info.infourl != null && info.infourl != '') + html += ''; + else + html += ''; + + if (info.authorurl != null && info.authorurl != '') + html += ''; + else + html += ''; + + html += ''; + html += ''; + + document.getElementById('plugins_tab').style.display = ''; + + }); + + html += ''; + html += '
    ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
    ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
    '; + + tcont.innerHTML = html; + + tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; + tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; +} + +function insertHelpIFrame() { + var html; + + if (tinyMCEPopup.getParam('docs_url')) { + html = ''; + document.getElementById('iframecontainer').innerHTML = html; + document.getElementById('help_tab').style.display = 'block'; + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/anchor.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/anchor.js old mode 100755 new mode 100644 index 7fe78105..d7a854e9 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/anchor.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/anchor.js @@ -1,37 +1,37 @@ -tinyMCEPopup.requireLangPack(); - -var AnchorDialog = { - init : function(ed) { - var action, elm, f = document.forms[0]; - - this.editor = ed; - elm = ed.dom.getParent(ed.selection.getNode(), 'A'); - v = ed.dom.getAttrib(elm, 'name'); - - if (v) { - this.action = 'update'; - f.anchorName.value = v; - } - - f.insert.value = ed.getLang(elm ? 'update' : 'insert'); - }, - - update : function() { - var ed = this.editor, elm, name = document.forms[0].anchorName.value; - - tinyMCEPopup.restoreSelection(); - - if (this.action != 'update') - ed.selection.collapse(1); - - elm = ed.dom.getParent(ed.selection.getNode(), 'A'); - if (elm) - elm.name = name; - else - ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); - - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); +tinyMCEPopup.requireLangPack(); + +var AnchorDialog = { + init : function(ed) { + var action, elm, f = document.forms[0]; + + this.editor = ed; + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + v = ed.dom.getAttrib(elm, 'name'); + + if (v) { + this.action = 'update'; + f.anchorName.value = v; + } + + f.insert.value = ed.getLang(elm ? 'update' : 'insert'); + }, + + update : function() { + var ed = this.editor, elm, name = document.forms[0].anchorName.value; + + tinyMCEPopup.restoreSelection(); + + if (this.action != 'update') + ed.selection.collapse(1); + + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + if (elm) + elm.name = name; + else + ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); + + tinyMCEPopup.close(); + } +}; + +tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/charmap.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/charmap.js old mode 100755 new mode 100644 index 8c5aea17..53a26836 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/charmap.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/charmap.js @@ -1,335 +1,335 @@ -/** - * charmap.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -tinyMCEPopup.requireLangPack(); - -var charmap = [ - [' ', ' ', true, 'no-break space'], - ['&', '&', true, 'ampersand'], - ['"', '"', true, 'quotation mark'], -// finance - ['¢', '¢', true, 'cent sign'], - ['€', '€', true, 'euro sign'], - ['£', '£', true, 'pound sign'], - ['¥', '¥', true, 'yen sign'], -// signs - ['©', '©', true, 'copyright sign'], - ['®', '®', true, 'registered sign'], - ['™', '™', true, 'trade mark sign'], - ['‰', '‰', true, 'per mille sign'], - ['µ', 'µ', true, 'micro sign'], - ['·', '·', true, 'middle dot'], - ['•', '•', true, 'bullet'], - ['…', '…', true, 'three dot leader'], - ['′', '′', true, 'minutes / feet'], - ['″', '″', true, 'seconds / inches'], - ['§', '§', true, 'section sign'], - ['¶', '¶', true, 'paragraph sign'], - ['ß', 'ß', true, 'sharp s / ess-zed'], -// quotations - ['‹', '‹', true, 'single left-pointing angle quotation mark'], - ['›', '›', true, 'single right-pointing angle quotation mark'], - ['«', '«', true, 'left pointing guillemet'], - ['»', '»', true, 'right pointing guillemet'], - ['‘', '‘', true, 'left single quotation mark'], - ['’', '’', true, 'right single quotation mark'], - ['“', '“', true, 'left double quotation mark'], - ['”', '”', true, 'right double quotation mark'], - ['‚', '‚', true, 'single low-9 quotation mark'], - ['„', '„', true, 'double low-9 quotation mark'], - ['<', '<', true, 'less-than sign'], - ['>', '>', true, 'greater-than sign'], - ['≤', '≤', true, 'less-than or equal to'], - ['≥', '≥', true, 'greater-than or equal to'], - ['–', '–', true, 'en dash'], - ['—', '—', true, 'em dash'], - ['¯', '¯', true, 'macron'], - ['‾', '‾', true, 'overline'], - ['¤', '¤', true, 'currency sign'], - ['¦', '¦', true, 'broken bar'], - ['¨', '¨', true, 'diaeresis'], - ['¡', '¡', true, 'inverted exclamation mark'], - ['¿', '¿', true, 'turned question mark'], - ['ˆ', 'ˆ', true, 'circumflex accent'], - ['˜', '˜', true, 'small tilde'], - ['°', '°', true, 'degree sign'], - ['−', '−', true, 'minus sign'], - ['±', '±', true, 'plus-minus sign'], - ['÷', '÷', true, 'division sign'], - ['⁄', '⁄', true, 'fraction slash'], - ['×', '×', true, 'multiplication sign'], - ['¹', '¹', true, 'superscript one'], - ['²', '²', true, 'superscript two'], - ['³', '³', true, 'superscript three'], - ['¼', '¼', true, 'fraction one quarter'], - ['½', '½', true, 'fraction one half'], - ['¾', '¾', true, 'fraction three quarters'], -// math / logical - ['ƒ', 'ƒ', true, 'function / florin'], - ['∫', '∫', true, 'integral'], - ['∑', '∑', true, 'n-ary sumation'], - ['∞', '∞', true, 'infinity'], - ['√', '√', true, 'square root'], - ['∼', '∼', false,'similar to'], - ['≅', '≅', false,'approximately equal to'], - ['≈', '≈', true, 'almost equal to'], - ['≠', '≠', true, 'not equal to'], - ['≡', '≡', true, 'identical to'], - ['∈', '∈', false,'element of'], - ['∉', '∉', false,'not an element of'], - ['∋', '∋', false,'contains as member'], - ['∏', '∏', true, 'n-ary product'], - ['∧', '∧', false,'logical and'], - ['∨', '∨', false,'logical or'], - ['¬', '¬', true, 'not sign'], - ['∩', '∩', true, 'intersection'], - ['∪', '∪', false,'union'], - ['∂', '∂', true, 'partial differential'], - ['∀', '∀', false,'for all'], - ['∃', '∃', false,'there exists'], - ['∅', '∅', false,'diameter'], - ['∇', '∇', false,'backward difference'], - ['∗', '∗', false,'asterisk operator'], - ['∝', '∝', false,'proportional to'], - ['∠', '∠', false,'angle'], -// undefined - ['´', '´', true, 'acute accent'], - ['¸', '¸', true, 'cedilla'], - ['ª', 'ª', true, 'feminine ordinal indicator'], - ['º', 'º', true, 'masculine ordinal indicator'], - ['†', '†', true, 'dagger'], - ['‡', '‡', true, 'double dagger'], -// alphabetical special chars - ['À', 'À', true, 'A - grave'], - ['Á', 'Á', true, 'A - acute'], - ['Â', 'Â', true, 'A - circumflex'], - ['Ã', 'Ã', true, 'A - tilde'], - ['Ä', 'Ä', true, 'A - diaeresis'], - ['Å', 'Å', true, 'A - ring above'], - ['Æ', 'Æ', true, 'ligature AE'], - ['Ç', 'Ç', true, 'C - cedilla'], - ['È', 'È', true, 'E - grave'], - ['É', 'É', true, 'E - acute'], - ['Ê', 'Ê', true, 'E - circumflex'], - ['Ë', 'Ë', true, 'E - diaeresis'], - ['Ì', 'Ì', true, 'I - grave'], - ['Í', 'Í', true, 'I - acute'], - ['Î', 'Î', true, 'I - circumflex'], - ['Ï', 'Ï', true, 'I - diaeresis'], - ['Ð', 'Ð', true, 'ETH'], - ['Ñ', 'Ñ', true, 'N - tilde'], - ['Ò', 'Ò', true, 'O - grave'], - ['Ó', 'Ó', true, 'O - acute'], - ['Ô', 'Ô', true, 'O - circumflex'], - ['Õ', 'Õ', true, 'O - tilde'], - ['Ö', 'Ö', true, 'O - diaeresis'], - ['Ø', 'Ø', true, 'O - slash'], - ['Œ', 'Œ', true, 'ligature OE'], - ['Š', 'Š', true, 'S - caron'], - ['Ù', 'Ù', true, 'U - grave'], - ['Ú', 'Ú', true, 'U - acute'], - ['Û', 'Û', true, 'U - circumflex'], - ['Ü', 'Ü', true, 'U - diaeresis'], - ['Ý', 'Ý', true, 'Y - acute'], - ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], - ['Þ', 'Þ', true, 'THORN'], - ['à', 'à', true, 'a - grave'], - ['á', 'á', true, 'a - acute'], - ['â', 'â', true, 'a - circumflex'], - ['ã', 'ã', true, 'a - tilde'], - ['ä', 'ä', true, 'a - diaeresis'], - ['å', 'å', true, 'a - ring above'], - ['æ', 'æ', true, 'ligature ae'], - ['ç', 'ç', true, 'c - cedilla'], - ['è', 'è', true, 'e - grave'], - ['é', 'é', true, 'e - acute'], - ['ê', 'ê', true, 'e - circumflex'], - ['ë', 'ë', true, 'e - diaeresis'], - ['ì', 'ì', true, 'i - grave'], - ['í', 'í', true, 'i - acute'], - ['î', 'î', true, 'i - circumflex'], - ['ï', 'ï', true, 'i - diaeresis'], - ['ð', 'ð', true, 'eth'], - ['ñ', 'ñ', true, 'n - tilde'], - ['ò', 'ò', true, 'o - grave'], - ['ó', 'ó', true, 'o - acute'], - ['ô', 'ô', true, 'o - circumflex'], - ['õ', 'õ', true, 'o - tilde'], - ['ö', 'ö', true, 'o - diaeresis'], - ['ø', 'ø', true, 'o slash'], - ['œ', 'œ', true, 'ligature oe'], - ['š', 'š', true, 's - caron'], - ['ù', 'ù', true, 'u - grave'], - ['ú', 'ú', true, 'u - acute'], - ['û', 'û', true, 'u - circumflex'], - ['ü', 'ü', true, 'u - diaeresis'], - ['ý', 'ý', true, 'y - acute'], - ['þ', 'þ', true, 'thorn'], - ['ÿ', 'ÿ', true, 'y - diaeresis'], - ['Α', 'Α', true, 'Alpha'], - ['Β', 'Β', true, 'Beta'], - ['Γ', 'Γ', true, 'Gamma'], - ['Δ', 'Δ', true, 'Delta'], - ['Ε', 'Ε', true, 'Epsilon'], - ['Ζ', 'Ζ', true, 'Zeta'], - ['Η', 'Η', true, 'Eta'], - ['Θ', 'Θ', true, 'Theta'], - ['Ι', 'Ι', true, 'Iota'], - ['Κ', 'Κ', true, 'Kappa'], - ['Λ', 'Λ', true, 'Lambda'], - ['Μ', 'Μ', true, 'Mu'], - ['Ν', 'Ν', true, 'Nu'], - ['Ξ', 'Ξ', true, 'Xi'], - ['Ο', 'Ο', true, 'Omicron'], - ['Π', 'Π', true, 'Pi'], - ['Ρ', 'Ρ', true, 'Rho'], - ['Σ', 'Σ', true, 'Sigma'], - ['Τ', 'Τ', true, 'Tau'], - ['Υ', 'Υ', true, 'Upsilon'], - ['Φ', 'Φ', true, 'Phi'], - ['Χ', 'Χ', true, 'Chi'], - ['Ψ', 'Ψ', true, 'Psi'], - ['Ω', 'Ω', true, 'Omega'], - ['α', 'α', true, 'alpha'], - ['β', 'β', true, 'beta'], - ['γ', 'γ', true, 'gamma'], - ['δ', 'δ', true, 'delta'], - ['ε', 'ε', true, 'epsilon'], - ['ζ', 'ζ', true, 'zeta'], - ['η', 'η', true, 'eta'], - ['θ', 'θ', true, 'theta'], - ['ι', 'ι', true, 'iota'], - ['κ', 'κ', true, 'kappa'], - ['λ', 'λ', true, 'lambda'], - ['μ', 'μ', true, 'mu'], - ['ν', 'ν', true, 'nu'], - ['ξ', 'ξ', true, 'xi'], - ['ο', 'ο', true, 'omicron'], - ['π', 'π', true, 'pi'], - ['ρ', 'ρ', true, 'rho'], - ['ς', 'ς', true, 'final sigma'], - ['σ', 'σ', true, 'sigma'], - ['τ', 'τ', true, 'tau'], - ['υ', 'υ', true, 'upsilon'], - ['φ', 'φ', true, 'phi'], - ['χ', 'χ', true, 'chi'], - ['ψ', 'ψ', true, 'psi'], - ['ω', 'ω', true, 'omega'], -// symbols - ['ℵ', 'ℵ', false,'alef symbol'], - ['ϖ', 'ϖ', false,'pi symbol'], - ['ℜ', 'ℜ', false,'real part symbol'], - ['ϑ','ϑ', false,'theta symbol'], - ['ϒ', 'ϒ', false,'upsilon - hook symbol'], - ['℘', '℘', false,'Weierstrass p'], - ['ℑ', 'ℑ', false,'imaginary part'], -// arrows - ['←', '←', true, 'leftwards arrow'], - ['↑', '↑', true, 'upwards arrow'], - ['→', '→', true, 'rightwards arrow'], - ['↓', '↓', true, 'downwards arrow'], - ['↔', '↔', true, 'left right arrow'], - ['↵', '↵', false,'carriage return'], - ['⇐', '⇐', false,'leftwards double arrow'], - ['⇑', '⇑', false,'upwards double arrow'], - ['⇒', '⇒', false,'rightwards double arrow'], - ['⇓', '⇓', false,'downwards double arrow'], - ['⇔', '⇔', false,'left right double arrow'], - ['∴', '∴', false,'therefore'], - ['⊂', '⊂', false,'subset of'], - ['⊃', '⊃', false,'superset of'], - ['⊄', '⊄', false,'not a subset of'], - ['⊆', '⊆', false,'subset of or equal to'], - ['⊇', '⊇', false,'superset of or equal to'], - ['⊕', '⊕', false,'circled plus'], - ['⊗', '⊗', false,'circled times'], - ['⊥', '⊥', false,'perpendicular'], - ['⋅', '⋅', false,'dot operator'], - ['⌈', '⌈', false,'left ceiling'], - ['⌉', '⌉', false,'right ceiling'], - ['⌊', '⌊', false,'left floor'], - ['⌋', '⌋', false,'right floor'], - ['⟨', '〈', false,'left-pointing angle bracket'], - ['⟩', '〉', false,'right-pointing angle bracket'], - ['◊', '◊', true,'lozenge'], - ['♠', '♠', false,'black spade suit'], - ['♣', '♣', true, 'black club suit'], - ['♥', '♥', true, 'black heart suit'], - ['♦', '♦', true, 'black diamond suit'], - [' ', ' ', false,'en space'], - [' ', ' ', false,'em space'], - [' ', ' ', false,'thin space'], - ['‌', '‌', false,'zero width non-joiner'], - ['‍', '‍', false,'zero width joiner'], - ['‎', '‎', false,'left-to-right mark'], - ['‏', '‏', false,'right-to-left mark'], - ['­', '­', false,'soft hyphen'] -]; - -tinyMCEPopup.onInit.add(function() { - tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); -}); - -function renderCharMapHTML() { - var charsPerRow = 20, tdWidth=20, tdHeight=20, i; - var html = ''; - var cols=-1; - - for (i=0; i' - + '' - + charmap[i][1] - + ''; - if ((cols+1) % charsPerRow == 0) - html += ''; - } - } - - if (cols % charsPerRow > 0) { - var padd = charsPerRow - (cols % charsPerRow); - for (var i=0; i '; - } - - html += '
    '; - - return html; -} - -function insertChar(chr) { - tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); - - // Refocus in window - if (tinyMCEPopup.isWindow) - window.focus(); - - tinyMCEPopup.editor.focus(); - tinyMCEPopup.close(); -} - -function previewChar(codeA, codeB, codeN) { - var elmA = document.getElementById('codeA'); - var elmB = document.getElementById('codeB'); - var elmV = document.getElementById('codeV'); - var elmN = document.getElementById('codeN'); - - if (codeA=='#160;') { - elmV.innerHTML = '__'; - } else { - elmV.innerHTML = '&' + codeA; - } - - elmB.innerHTML = '&' + codeA; - elmA.innerHTML = '&' + codeB; - elmN.innerHTML = codeN; -} +/** + * charmap.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +tinyMCEPopup.requireLangPack(); + +var charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], + ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true,'lozenge'], + ['♠', '♠', false,'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +tinyMCEPopup.onInit.add(function() { + tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); +}); + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20, i; + var html = ''; + var cols=-1; + + for (i=0; i' + + '' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + + html += '
    '; + + return html; +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.editor.focus(); + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/color_picker.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/color_picker.js old mode 100755 new mode 100644 index fd9700f2..c1a65db2 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/color_picker.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/color_picker.js @@ -1,253 +1,253 @@ -tinyMCEPopup.requireLangPack(); - -var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; - -var colors = [ - "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", - "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", - "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", - "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", - "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", - "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", - "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", - "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", - "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", - "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", - "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", - "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", - "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", - "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", - "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", - "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", - "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", - "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", - "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", - "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", - "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", - "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", - "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", - "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", - "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", - "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", - "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" -]; - -var named = { - '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', - '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown', - '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue', - '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod', - '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen', - '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue', - '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue', - '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen', - '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey', - '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory', - '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue', - '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen', - '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey', - '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', - '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue', - '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin', - '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid', - '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff', - '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue', - '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver', - '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen', - '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', - '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen' -}; - -function init() { - var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')); - - tinyMCEPopup.resizeToInnerSize(); - - generatePicker(); - - if (inputColor) { - changeFinalColor(inputColor); - - col = convertHexToRGB(inputColor); - - if (col) - updateLight(col.r, col.g, col.b); - } -} - -function insertAction() { - var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); - - tinyMCEPopup.restoreSelection(); - - if (f) - f(color); - - tinyMCEPopup.close(); -} - -function showColor(color, name) { - if (name) - document.getElementById("colorname").innerHTML = name; - - document.getElementById("preview").style.backgroundColor = color; - document.getElementById("color").value = color.toLowerCase(); -} - -function convertRGBToHex(col) { - var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); - - if (!col) - return col; - - var rgb = col.replace(re, "$1,$2,$3").split(','); - if (rgb.length == 3) { - r = parseInt(rgb[0]).toString(16); - g = parseInt(rgb[1]).toString(16); - b = parseInt(rgb[2]).toString(16); - - r = r.length == 1 ? '0' + r : r; - g = g.length == 1 ? '0' + g : g; - b = b.length == 1 ? '0' + b : b; - - return "#" + r + g + b; - } - - return col; -} - -function convertHexToRGB(col) { - if (col.indexOf('#') != -1) { - col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); - - r = parseInt(col.substring(0, 2), 16); - g = parseInt(col.substring(2, 4), 16); - b = parseInt(col.substring(4, 6), 16); - - return {r : r, g : g, b : b}; - } - - return null; -} - -function generatePicker() { - var el = document.getElementById('light'), h = '', i; - - for (i = 0; i < detail; i++){ - h += '
    '; - } - - el.innerHTML = h; -} - -function generateWebColors() { - var el = document.getElementById('webcolors'), h = '', i; - - if (el.className == 'generated') - return; - - h += '' - + ''; - - for (i=0; i' - + '' - + ''; - if ((i+1) % 18 == 0) - h += ''; - } - - h += '
    '; - - el.innerHTML = h; - el.className = 'generated'; -} - -function generateNamedColors() { - var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; - - if (el.className == 'generated') - return; - - for (n in named) { - v = named[n]; - h += '' - } - - el.innerHTML = h; - el.className = 'generated'; -} - -function dechex(n) { - return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); -} - -function computeColor(e) { - var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; - - x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); - y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); - - partWidth = document.getElementById('colors').width / 6; - partDetail = detail / 2; - imHeight = document.getElementById('colors').height; - - r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; - g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); - b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); - - coef = (imHeight - y) / imHeight; - r = 128 + (r - 128) * coef; - g = 128 + (g - 128) * coef; - b = 128 + (b - 128) * coef; - - changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); - updateLight(r, g, b); -} - -function updateLight(r, g, b) { - var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; - - for (i=0; i=0) && (i'; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + h += '' + + ''; + + for (i=0; i' + + '' + + ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
    '; + + el.innerHTML = h; + el.className = 'generated'; +} + +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += '' + } + + el.innerHTML = h; + el.className = 'generated'; +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); + + partWidth = document.getElementById('colors').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colors').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i'); - }, - - init : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor; - - // Setup browse button - document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); - if (isVisible('srcbrowser')) - document.getElementById('src').style.width = '180px'; - - e = ed.selection.getNode(); - - this.fillFileList('image_list', 'tinyMCEImageList'); - - if (e.nodeName == 'IMG') { - f.src.value = ed.dom.getAttrib(e, 'src'); - f.alt.value = ed.dom.getAttrib(e, 'alt'); - f.border.value = this.getAttrib(e, 'border'); - f.vspace.value = this.getAttrib(e, 'vspace'); - f.hspace.value = this.getAttrib(e, 'hspace'); - f.width.value = ed.dom.getAttrib(e, 'width'); - f.height.value = ed.dom.getAttrib(e, 'height'); - f.insert.value = ed.getLang('update'); - this.styleVal = ed.dom.getAttrib(e, 'style'); - selectByValue(f, 'image_list', f.src.value); - selectByValue(f, 'align', this.getAttrib(e, 'align')); - this.updateStyle(); - } - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = window[l]; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - update : function() { - var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; - - tinyMCEPopup.restoreSelection(); - - if (f.src.value === '') { - if (ed.selection.getNode().nodeName == 'IMG') { - ed.dom.remove(ed.selection.getNode()); - ed.execCommand('mceRepaint'); - } - - tinyMCEPopup.close(); - return; - } - - if (!ed.settings.inline_styles) { - args = tinymce.extend(args, { - vspace : nl.vspace.value, - hspace : nl.hspace.value, - border : nl.border.value, - align : getSelectValue(f, 'align') - }); - } else - args.style = this.styleVal; - - tinymce.extend(args, { - src : f.src.value, - alt : f.alt.value, - width : f.width.value, - height : f.height.value - }); - - el = ed.selection.getNode(); - - if (el && el.nodeName == 'IMG') { - ed.dom.setAttribs(el, args); - } else { - ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); - ed.dom.setAttribs('__mce_tmp', args); - ed.dom.setAttrib('__mce_tmp', 'id', ''); - ed.undoManager.add(); - } - - tinyMCEPopup.close(); - }, - - updateStyle : function() { - var dom = tinyMCEPopup.dom, st, v, f = document.forms[0]; - - if (tinyMCEPopup.editor.settings.inline_styles) { - st = tinyMCEPopup.dom.parseStyle(this.styleVal); - - // Handle align - v = getSelectValue(f, 'align'); - if (v) { - if (v == 'left' || v == 'right') { - st['float'] = v; - delete st['vertical-align']; - } else { - st['vertical-align'] = v; - delete st['float']; - } - } else { - delete st['float']; - delete st['vertical-align']; - } - - // Handle border - v = f.border.value; - if (v || v == '0') { - if (v == '0') - st['border'] = '0'; - else - st['border'] = v + 'px solid black'; - } else - delete st['border']; - - // Handle hspace - v = f.hspace.value; - if (v) { - delete st['margin']; - st['margin-left'] = v + 'px'; - st['margin-right'] = v + 'px'; - } else { - delete st['margin-left']; - delete st['margin-right']; - } - - // Handle vspace - v = f.vspace.value; - if (v) { - delete st['margin']; - st['margin-top'] = v + 'px'; - st['margin-bottom'] = v + 'px'; - } else { - delete st['margin-top']; - delete st['margin-bottom']; - } - - // Merge - st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); - this.styleVal = dom.serializeStyle(st, 'img'); - } - }, - - getAttrib : function(e, at) { - var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; - - if (ed.settings.inline_styles) { - switch (at) { - case 'align': - if (v = dom.getStyle(e, 'float')) - return v; - - if (v = dom.getStyle(e, 'vertical-align')) - return v; - - break; - - case 'hspace': - v = dom.getStyle(e, 'margin-left') - v2 = dom.getStyle(e, 'margin-right'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'vspace': - v = dom.getStyle(e, 'margin-top') - v2 = dom.getStyle(e, 'margin-bottom'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'border': - v = 0; - - tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { - sv = dom.getStyle(e, 'border-' + sv + '-width'); - - // False or not the same as prev - if (!sv || (sv != v && v !== 0)) { - v = 0; - return false; - } - - if (sv) - v = sv; - }); - - if (v) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - } - } - - if (v = dom.getAttrib(e, at)) - return v; - - return ''; - }, - - resetImageData : function() { - var f = document.forms[0]; - - f.width.value = f.height.value = ""; - }, - - updateImageData : function() { - var f = document.forms[0], t = ImageDialog; - - if (f.width.value == "") - f.width.value = t.preloadImg.width; - - if (f.height.value == "") - f.height.value = t.preloadImg.height; - }, - - getImageData : function() { - var f = document.forms[0]; - - this.preloadImg = new Image(); - this.preloadImg.onload = this.updateImageData; - this.preloadImg.onerror = this.resetImageData; - this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); - } -}; - -ImageDialog.preInit(); -tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); +var ImageDialog = { + preInit : function() { + var url; + + tinyMCEPopup.requireLangPack(); + + if (url = tinyMCEPopup.getParam("external_image_list_url")) + document.write(''); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '180px'; + + e = ed.selection.getNode(); + + this.fillFileList('image_list', 'tinyMCEImageList'); + + if (e.nodeName == 'IMG') { + f.src.value = ed.dom.getAttrib(e, 'src'); + f.alt.value = ed.dom.getAttrib(e, 'alt'); + f.border.value = this.getAttrib(e, 'border'); + f.vspace.value = this.getAttrib(e, 'vspace'); + f.hspace.value = this.getAttrib(e, 'hspace'); + f.width.value = ed.dom.getAttrib(e, 'width'); + f.height.value = ed.dom.getAttrib(e, 'height'); + f.insert.value = ed.getLang('update'); + this.styleVal = ed.dom.getAttrib(e, 'style'); + selectByValue(f, 'image_list', f.src.value); + selectByValue(f, 'align', this.getAttrib(e, 'align')); + this.updateStyle(); + } + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + update : function() { + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; + + tinyMCEPopup.restoreSelection(); + + if (f.src.value === '') { + if (ed.selection.getNode().nodeName == 'IMG') { + ed.dom.remove(ed.selection.getNode()); + ed.execCommand('mceRepaint'); + } + + tinyMCEPopup.close(); + return; + } + + if (!ed.settings.inline_styles) { + args = tinymce.extend(args, { + vspace : nl.vspace.value, + hspace : nl.hspace.value, + border : nl.border.value, + align : getSelectValue(f, 'align') + }); + } else + args.style = this.styleVal; + + tinymce.extend(args, { + src : f.src.value, + alt : f.alt.value, + width : f.width.value, + height : f.height.value + }); + + el = ed.selection.getNode(); + + if (el && el.nodeName == 'IMG') { + ed.dom.setAttribs(el, args); + } else { + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.dom.setAttribs('__mce_tmp', args); + ed.dom.setAttrib('__mce_tmp', 'id', ''); + ed.undoManager.add(); + } + + tinyMCEPopup.close(); + }, + + updateStyle : function() { + var dom = tinyMCEPopup.dom, st, v, f = document.forms[0]; + + if (tinyMCEPopup.editor.settings.inline_styles) { + st = tinyMCEPopup.dom.parseStyle(this.styleVal); + + // Handle align + v = getSelectValue(f, 'align'); + if (v) { + if (v == 'left' || v == 'right') { + st['float'] = v; + delete st['vertical-align']; + } else { + st['vertical-align'] = v; + delete st['float']; + } + } else { + delete st['float']; + delete st['vertical-align']; + } + + // Handle border + v = f.border.value; + if (v || v == '0') { + if (v == '0') + st['border'] = '0'; + else + st['border'] = v + 'px solid black'; + } else + delete st['border']; + + // Handle hspace + v = f.hspace.value; + if (v) { + delete st['margin']; + st['margin-left'] = v + 'px'; + st['margin-right'] = v + 'px'; + } else { + delete st['margin-left']; + delete st['margin-right']; + } + + // Handle vspace + v = f.vspace.value; + if (v) { + delete st['margin']; + st['margin-top'] = v + 'px'; + st['margin-bottom'] = v + 'px'; + } else { + delete st['margin-top']; + delete st['margin-bottom']; + } + + // Merge + st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); + this.styleVal = dom.serializeStyle(st, 'img'); + } + }, + + getAttrib : function(e, at) { + var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; + + if (ed.settings.inline_styles) { + switch (at) { + case 'align': + if (v = dom.getStyle(e, 'float')) + return v; + + if (v = dom.getStyle(e, 'vertical-align')) + return v; + + break; + + case 'hspace': + v = dom.getStyle(e, 'margin-left') + v2 = dom.getStyle(e, 'margin-right'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'vspace': + v = dom.getStyle(e, 'margin-top') + v2 = dom.getStyle(e, 'margin-bottom'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'border': + v = 0; + + tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { + sv = dom.getStyle(e, 'border-' + sv + '-width'); + + // False or not the same as prev + if (!sv || (sv != v && v !== 0)) { + v = 0; + return false; + } + + if (sv) + v = sv; + }); + + if (v) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + } + } + + if (v = dom.getAttrib(e, at)) + return v; + + return ''; + }, + + resetImageData : function() { + var f = document.forms[0]; + + f.width.value = f.height.value = ""; + }, + + updateImageData : function() { + var f = document.forms[0], t = ImageDialog; + + if (f.width.value == "") + f.width.value = t.preloadImg.width; + + if (f.height.value == "") + f.height.value = t.preloadImg.height; + }, + + getImageData : function() { + var f = document.forms[0]; + + this.preloadImg = new Image(); + this.preloadImg.onload = this.updateImageData; + this.preloadImg.onerror = this.resetImageData; + this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); + } +}; + +ImageDialog.preInit(); +tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/link.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/link.js old mode 100755 new mode 100644 index f67a5bc8..73b9f597 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/link.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/link.js @@ -1,156 +1,156 @@ -tinyMCEPopup.requireLangPack(); - -var LinkDialog = { - preInit : function() { - var url; - - if (url = tinyMCEPopup.getParam("external_link_list_url")) - document.write(''); - }, - - init : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor; - - // Setup browse button - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '180px'; - - this.fillClassList('class_list'); - this.fillFileList('link_list', 'tinyMCELinkList'); - this.fillTargetList('target_list'); - - if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { - f.href.value = ed.dom.getAttrib(e, 'href'); - f.linktitle.value = ed.dom.getAttrib(e, 'title'); - f.insert.value = ed.getLang('update'); - selectByValue(f, 'link_list', f.href.value); - selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); - selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); - } - }, - - update : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor, e, b; - - tinyMCEPopup.restoreSelection(); - e = ed.dom.getParent(ed.selection.getNode(), 'A'); - - // Remove element if there is no href - if (!f.href.value) { - if (e) { - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - b = ed.selection.getBookmark(); - ed.dom.remove(e, 1); - ed.selection.moveToBookmark(b); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - return; - } - } - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - - // Create new anchor elements - if (e == null) { - ed.getDoc().execCommand("unlink", false, null); - tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); - - tinymce.each(ed.dom.select("a"), function(n) { - if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { - e = n; - - ed.dom.setAttribs(e, { - href : f.href.value, - title : f.linktitle.value, - target : f.target_list ? getSelectValue(f, "target_list") : null, - 'class' : f.class_list ? getSelectValue(f, "class_list") : null - }); - } - }); - } else { - ed.dom.setAttribs(e, { - href : f.href.value, - title : f.linktitle.value, - target : f.target_list ? getSelectValue(f, "target_list") : null, - 'class' : f.class_list ? getSelectValue(f, "class_list") : null - }); - } - - // Don't move caret if selection was image - if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { - ed.focus(); - ed.selection.select(e); - ed.selection.collapse(0); - tinyMCEPopup.storeSelection(); - } - - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - }, - - checkPrefix : function(n) { - if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) - n.value = 'mailto:' + n.value; - - if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) - n.value = 'http://' + n.value; - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = window[l]; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillClassList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { - cl = []; - - tinymce.each(v.split(';'), function(v) { - var p = v.split('='); - - cl.push({'title' : p[0], 'class' : p[1]}); - }); - } else - cl = tinyMCEPopup.editor.dom.getClasses(); - - if (cl.length > 0) { - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - - tinymce.each(cl, function(o) { - lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillTargetList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v; - - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); - - if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { - tinymce.each(v.split(','), function(v) { - v = v.split('='); - lst.options[lst.options.length] = new Option(v[0], v[1]); - }); - } - } -}; - -LinkDialog.preInit(); -tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); +tinyMCEPopup.requireLangPack(); + +var LinkDialog = { + preInit : function() { + var url; + + if (url = tinyMCEPopup.getParam("external_link_list_url")) + document.write(''); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '180px'; + + this.fillClassList('class_list'); + this.fillFileList('link_list', 'tinyMCELinkList'); + this.fillTargetList('target_list'); + + if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { + f.href.value = ed.dom.getAttrib(e, 'href'); + f.linktitle.value = ed.dom.getAttrib(e, 'title'); + f.insert.value = ed.getLang('update'); + selectByValue(f, 'link_list', f.href.value); + selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); + selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); + } + }, + + update : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor, e, b; + + tinyMCEPopup.restoreSelection(); + e = ed.dom.getParent(ed.selection.getNode(), 'A'); + + // Remove element if there is no href + if (!f.href.value) { + if (e) { + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + b = ed.selection.getBookmark(); + ed.dom.remove(e, 1); + ed.selection.moveToBookmark(b); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + return; + } + } + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (e == null) { + ed.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); + + tinymce.each(ed.dom.select("a"), function(n) { + if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { + e = n; + + ed.dom.setAttribs(e, { + href : f.href.value, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + }); + } else { + ed.dom.setAttribs(e, { + href : f.href.value, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + + // Don't move caret if selection was image + if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { + ed.focus(); + ed.selection.select(e); + ed.selection.collapse(0); + tinyMCEPopup.storeSelection(); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + }, + + checkPrefix : function(n) { + if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) + n.value = 'http://' + n.value; + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillClassList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { + cl = []; + + tinymce.each(v.split(';'), function(v) { + var p = v.split('='); + + cl.push({'title' : p[0], 'class' : p[1]}); + }); + } else + cl = tinyMCEPopup.editor.dom.getClasses(); + + if (cl.length > 0) { + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + + tinymce.each(cl, function(o) { + lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillTargetList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v; + + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); + + if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { + tinymce.each(v.split(','), function(v) { + v = v.split('='); + lst.options[lst.options.length] = new Option(v[0], v[1]); + }); + } + } +}; + +LinkDialog.preInit(); +tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/source_editor.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/source_editor.js old mode 100755 new mode 100644 index 27932861..81063ecb --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/source_editor.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/js/source_editor.js @@ -1,62 +1,62 @@ -tinyMCEPopup.requireLangPack(); -tinyMCEPopup.onInit.add(onLoadInit); - -function saveContent() { - tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); - tinyMCEPopup.close(); -} - -function onLoadInit() { - tinyMCEPopup.resizeToInnerSize(); - - // Remove Gecko spellchecking - if (tinymce.isGecko) - document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); - - document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); - - if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { - setWrap('soft'); - document.getElementById('wraped').checked = true; - } - - resizeInputs(); -} - -function setWrap(val) { - var v, n, s = document.getElementById('htmlSource'); - - s.wrap = val; - - if (!tinymce.isIE) { - v = s.value; - n = s.cloneNode(false); - n.setAttribute("wrap", val); - s.parentNode.replaceChild(n, s); - n.value = v; - } -} - -function toggleWordWrap(elm) { - if (elm.checked) - setWrap('soft'); - else - setWrap('off'); -} - -var wHeight=0, wWidth=0, owHeight=0, owWidth=0; - -function resizeInputs() { - var el = document.getElementById('htmlSource'); - - if (!tinymce.isIE) { - wHeight = self.innerHeight - 65; - wWidth = self.innerWidth - 16; - } else { - wHeight = document.body.clientHeight - 70; - wWidth = document.body.clientWidth - 16; - } - - el.style.height = Math.abs(wHeight) + 'px'; - el.style.width = Math.abs(wWidth) + 'px'; -} +tinyMCEPopup.requireLangPack(); +tinyMCEPopup.onInit.add(onLoadInit); + +function saveContent() { + tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Remove Gecko spellchecking + if (tinymce.isGecko) + document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); + + document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); + + if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { + setWrap('soft'); + document.getElementById('wraped').checked = true; + } + + resizeInputs(); +} + +function setWrap(val) { + var v, n, s = document.getElementById('htmlSource'); + + s.wrap = val; + + if (!tinymce.isIE) { + v = s.value; + n = s.cloneNode(false); + n.setAttribute("wrap", val); + s.parentNode.replaceChild(n, s); + n.value = v; + } +} + +function toggleWordWrap(elm) { + if (elm.checked) + setWrap('soft'); + else + setWrap('off'); +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function resizeInputs() { + var el = document.getElementById('htmlSource'); + + if (!tinymce.isIE) { + wHeight = self.innerHeight - 65; + wWidth = self.innerWidth - 16; + } else { + wHeight = document.body.clientHeight - 70; + wWidth = document.body.clientWidth - 16; + } + + el.style.height = Math.abs(wHeight) + 'px'; + el.style.width = Math.abs(wWidth) + 'px'; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en.js old mode 100755 new mode 100644 index 69694b1f..52989e39 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en.js @@ -1,62 +1,62 @@ -tinyMCE.addI18n('en.advanced',{ -style_select:"Styles", -font_size:"Font size", -fontdefault:"Font family", -block:"Format", -paragraph:"Paragraph", -div:"Div", -address:"Address", -pre:"Preformatted", -h1:"Heading 1", -h2:"Heading 2", -h3:"Heading 3", -h4:"Heading 4", -h5:"Heading 5", -h6:"Heading 6", -blockquote:"Blockquote", -code:"Code", -samp:"Code sample", -dt:"Definition term ", -dd:"Definition description", -bold_desc:"Bold (Ctrl+B)", -italic_desc:"Italic (Ctrl+I)", -underline_desc:"Underline (Ctrl+U)", -striketrough_desc:"Strikethrough", -justifyleft_desc:"Align left", -justifycenter_desc:"Align center", -justifyright_desc:"Align right", -justifyfull_desc:"Align full", -bullist_desc:"Unordered list", -numlist_desc:"Ordered list", -outdent_desc:"Outdent", -indent_desc:"Indent", -undo_desc:"Undo (Ctrl+Z)", -redo_desc:"Redo (Ctrl+Y)", -link_desc:"Insert/edit link", -unlink_desc:"Unlink", -image_desc:"Insert/edit image", -cleanup_desc:"Cleanup messy code", -code_desc:"Edit HTML Source", -sub_desc:"Subscript", -sup_desc:"Superscript", -hr_desc:"Insert horizontal ruler", -removeformat_desc:"Remove formatting", -custom1_desc:"Your custom description here", -forecolor_desc:"Select text color", -backcolor_desc:"Select background color", -charmap_desc:"Insert custom character", -visualaid_desc:"Toggle guidelines/invisible elements", -anchor_desc:"Insert/edit anchor", -cut_desc:"Cut", -copy_desc:"Copy", -paste_desc:"Paste", -image_props_desc:"Image properties", -newdocument_desc:"New document", -help_desc:"Help", -blockquote_desc:"Blockquote", -clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", -path:"Path", -newdocument:"Are you sure you want clear all contents?", -toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", -more_colors:"More colors" +tinyMCE.addI18n('en.advanced',{ +style_select:"Styles", +font_size:"Font size", +fontdefault:"Font family", +block:"Format", +paragraph:"Paragraph", +div:"Div", +address:"Address", +pre:"Preformatted", +h1:"Heading 1", +h2:"Heading 2", +h3:"Heading 3", +h4:"Heading 4", +h5:"Heading 5", +h6:"Heading 6", +blockquote:"Blockquote", +code:"Code", +samp:"Code sample", +dt:"Definition term ", +dd:"Definition description", +bold_desc:"Bold (Ctrl+B)", +italic_desc:"Italic (Ctrl+I)", +underline_desc:"Underline (Ctrl+U)", +striketrough_desc:"Strikethrough", +justifyleft_desc:"Align left", +justifycenter_desc:"Align center", +justifyright_desc:"Align right", +justifyfull_desc:"Align full", +bullist_desc:"Unordered list", +numlist_desc:"Ordered list", +outdent_desc:"Outdent", +indent_desc:"Indent", +undo_desc:"Undo (Ctrl+Z)", +redo_desc:"Redo (Ctrl+Y)", +link_desc:"Insert/edit link", +unlink_desc:"Unlink", +image_desc:"Insert/edit image", +cleanup_desc:"Cleanup messy code", +code_desc:"Edit HTML Source", +sub_desc:"Subscript", +sup_desc:"Superscript", +hr_desc:"Insert horizontal ruler", +removeformat_desc:"Remove formatting", +custom1_desc:"Your custom description here", +forecolor_desc:"Select text color", +backcolor_desc:"Select background color", +charmap_desc:"Insert custom character", +visualaid_desc:"Toggle guidelines/invisible elements", +anchor_desc:"Insert/edit anchor", +cut_desc:"Cut", +copy_desc:"Copy", +paste_desc:"Paste", +image_props_desc:"Image properties", +newdocument_desc:"New document", +help_desc:"Help", +blockquote_desc:"Blockquote", +clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", +path:"Path", +newdocument:"Are you sure you want clear all contents?", +toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", +more_colors:"More colors" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js old mode 100755 new mode 100644 index 9d124d7d..80e49419 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js @@ -1,51 +1,51 @@ -tinyMCE.addI18n('en.advanced_dlg',{ -about_title:"About TinyMCE", -about_general:"About", -about_help:"Help", -about_license:"License", -about_plugins:"Plugins", -about_plugin:"Plugin", -about_author:"Author", -about_version:"Version", -about_loaded:"Loaded plugins", -anchor_title:"Insert/edit anchor", -anchor_name:"Anchor name", -code_title:"HTML Source Editor", -code_wordwrap:"Word wrap", -colorpicker_title:"Select a color", -colorpicker_picker_tab:"Picker", -colorpicker_picker_title:"Color picker", -colorpicker_palette_tab:"Palette", -colorpicker_palette_title:"Palette colors", -colorpicker_named_tab:"Named", -colorpicker_named_title:"Named colors", -colorpicker_color:"Color:", -colorpicker_name:"Name:", -charmap_title:"Select custom character", -image_title:"Insert/edit image", -image_src:"Image URL", -image_alt:"Image description", -image_list:"Image list", -image_border:"Border", -image_dimensions:"Dimensions", -image_vspace:"Vertical space", -image_hspace:"Horizontal space", -image_align:"Alignment", -image_align_baseline:"Baseline", -image_align_top:"Top", -image_align_middle:"Middle", -image_align_bottom:"Bottom", -image_align_texttop:"Text top", -image_align_textbottom:"Text bottom", -image_align_left:"Left", -image_align_right:"Right", -link_title:"Insert/edit link", -link_url:"Link URL", -link_target:"Target", -link_target_same:"Open link in the same window", -link_target_blank:"Open link in a new window", -link_titlefield:"Title", -link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", -link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", -link_list:"Link list" +tinyMCE.addI18n('en.advanced_dlg',{ +about_title:"About TinyMCE", +about_general:"About", +about_help:"Help", +about_license:"License", +about_plugins:"Plugins", +about_plugin:"Plugin", +about_author:"Author", +about_version:"Version", +about_loaded:"Loaded plugins", +anchor_title:"Insert/edit anchor", +anchor_name:"Anchor name", +code_title:"HTML Source Editor", +code_wordwrap:"Word wrap", +colorpicker_title:"Select a color", +colorpicker_picker_tab:"Picker", +colorpicker_picker_title:"Color picker", +colorpicker_palette_tab:"Palette", +colorpicker_palette_title:"Palette colors", +colorpicker_named_tab:"Named", +colorpicker_named_title:"Named colors", +colorpicker_color:"Color:", +colorpicker_name:"Name:", +charmap_title:"Select custom character", +image_title:"Insert/edit image", +image_src:"Image URL", +image_alt:"Image description", +image_list:"Image list", +image_border:"Border", +image_dimensions:"Dimensions", +image_vspace:"Vertical space", +image_hspace:"Horizontal space", +image_align:"Alignment", +image_align_baseline:"Baseline", +image_align_top:"Top", +image_align_middle:"Middle", +image_align_bottom:"Bottom", +image_align_texttop:"Text top", +image_align_textbottom:"Text bottom", +image_align_left:"Left", +image_align_right:"Right", +link_title:"Insert/edit link", +link_url:"Link URL", +link_target:"Target", +link_target_same:"Open link in the same window", +link_target_blank:"Open link in a new window", +link_titlefield:"Title", +link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", +link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", +link_list:"Link list" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/link.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/link.htm old mode 100755 new mode 100644 index 7565b9ae..22627ccc --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/link.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/link.htm @@ -1,58 +1,58 @@ - - - - {#advanced_dlg.link_title} - - - - - - - -
    - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    -
    - -
    - - -
    -
    - - + + + + {#advanced_dlg.link_title} + + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    +
    +
    + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/content.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/content.css old mode 100755 new mode 100644 index 36f38aba..987c5968 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/content.css @@ -1,35 +1,35 @@ -body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} -body {background:#FFF;} -body.mceForceColors {background:#FFF; color:#000;} -h1 {font-size: 2em} -h2 {font-size: 1.5em} -h3 {font-size: 1.17em} -h4 {font-size: 1em} -h5 {font-size: .83em} -h6 {font-size: .75em} -.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} -td.mceSelected, th.mceSelected {background-color:#3399ff !important} -img {border:0;} -table {cursor:default} -table td, table th {cursor:text} -ins {border-bottom:1px solid green; text-decoration: none; color:green} -del {color:red; text-decoration:line-through} -cite {border-bottom:1px dashed blue} -acronym {border-bottom:1px dotted #CCC; cursor:help} -abbr {border-bottom:1px dashed #CCC; cursor:help} - -/* IE */ -* html body { -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -} - -img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} -font[face=mceinline] {font-family:inherit !important} +body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} +body {background:#FFF;} +body.mceForceColors {background:#FFF; color:#000;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} +td.mceSelected, th.mceSelected {background-color:#3399ff !important} +img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr {border-bottom:1px dashed #CCC; cursor:help} + +/* IE */ +* html body { +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +} + +img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} +font[face=mceinline] {font-family:inherit !important} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css old mode 100755 new mode 100644 index f0122265..1f5598c6 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css @@ -1,117 +1,117 @@ -/* Generic */ -body { -font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDDDDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -background:#F0F0EE; -padding:0; -margin:8px 8px 0 8px; -} - -html {background:#F0F0EE;} -td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -textarea {resize:none;outline:none;} -a:link, a:visited {color:black;} -a:hover {color:#2B6FB6;} -.nowrap {white-space: nowrap} - -/* Forms */ -fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} -legend {color:#2B6FB6; font-weight:bold;} -label.msg {display:none;} -label.invalid {color:#EE0000; display:inline;} -input.invalid {border:1px solid #EE0000;} -input {background:#FFF; border:1px solid #CCC;} -input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -input, select, textarea {border:1px solid #808080;} -input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} -input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} -.input_noborder {border:0;} - -/* Buttons */ -#insert, #cancel, input.button, .updateButton { -border:0; margin:0; padding:0; -font-weight:bold; -width:94px; height:26px; -background:url(img/buttons.png) 0 -26px; -cursor:pointer; -padding-bottom:2px; -float:left; -} - -#insert {background:url(img/buttons.png) 0 -52px} -#cancel {background:url(img/buttons.png) 0 0; float:right} - -/* Browse */ -a.pickcolor, a.browse {text-decoration:none} -a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} -.mceOldBoxModel a.browse span {width:22px; height:20px;} -a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} -a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} -.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} -a.pickcolor:hover span {background-color:#B2BBD0;} -a.pickcolor:hover span.disabled {} - -/* Charmap */ -table.charmap {border:1px solid #AAA; text-align:center} -td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} -#charmap a {display:block; color:#000; text-decoration:none; border:0} -#charmap a:hover {background:#CCC;color:#2B6FB6} -#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} -#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} - -/* Source */ -.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} -.mceActionPanel {margin-top:5px;} - -/* Tabs classes */ -.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} -.tabs ul {margin:0; padding:0; list-style:none;} -.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} -.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} -.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} -.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} -.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} -.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} - -/* Panels */ -.panel_wrapper div.panel {display:none;} -.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} -.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} - -/* Columns */ -.column {float:left;} -.properties {width:100%;} -.properties .column1 {} -.properties .column2 {text-align:left;} - -/* Titles */ -h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} -h3 {font-size:14px;} -.title {font-size:12px; font-weight:bold; color:#2B6FB6;} - -/* Dialog specific */ -#link .panel_wrapper, #link div.current {height:125px;} -#image .panel_wrapper, #image div.current {height:200px;} -#plugintable thead {font-weight:bold; background:#DDD;} -#plugintable, #about #plugintable td {border:1px solid #919B9C;} -#plugintable {width:96%; margin-top:10px;} -#pluginscontainer {height:290px; overflow:auto;} -#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} -#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} -#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} -#colorpicker #light div {overflow:hidden;} -#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} -#colorpicker .panel_wrapper div.current {height:175px;} -#colorpicker #namedcolors {width:150px;} -#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} -#colorpicker #colornamecontainer {margin-top:5px;} -#colorpicker #picker_panel fieldset {margin:auto;width:325px;} +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDDDDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +background:#F0F0EE; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#F0F0EE;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;} +a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} + +/* Forms */ +fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} +legend {color:#2B6FB6; font-weight:bold;} +label.msg {display:none;} +label.invalid {color:#EE0000; display:inline;} +input.invalid {border:1px solid #EE0000;} +input {background:#FFF; border:1px solid #CCC;} +input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +input, select, textarea {border:1px solid #808080;} +input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} +input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} +.input_noborder {border:0;} + +/* Buttons */ +#insert, #cancel, input.button, .updateButton { +border:0; margin:0; padding:0; +font-weight:bold; +width:94px; height:26px; +background:url(img/buttons.png) 0 -26px; +cursor:pointer; +padding-bottom:2px; +float:left; +} + +#insert {background:url(img/buttons.png) 0 -52px} +#cancel {background:url(img/buttons.png) 0 0; float:right} + +/* Browse */ +a.pickcolor, a.browse {text-decoration:none} +a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} +.mceOldBoxModel a.browse span {width:22px; height:20px;} +a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} +a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} +.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} +a.pickcolor:hover span {background-color:#B2BBD0;} +a.pickcolor:hover span.disabled {} + +/* Charmap */ +table.charmap {border:1px solid #AAA; text-align:center} +td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} +#charmap a {display:block; color:#000; text-decoration:none; border:0} +#charmap a:hover {background:#CCC;color:#2B6FB6} +#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} +#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} + +/* Source */ +.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} +.mceActionPanel {margin-top:5px;} + +/* Tabs classes */ +.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} +.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} +.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} +.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} +.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} +.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} + +/* Panels */ +.panel_wrapper div.panel {display:none;} +.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} +.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} + +/* Columns */ +.column {float:left;} +.properties {width:100%;} +.properties .column1 {} +.properties .column2 {text-align:left;} + +/* Titles */ +h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} +h3 {font-size:14px;} +.title {font-size:12px; font-weight:bold; color:#2B6FB6;} + +/* Dialog specific */ +#link .panel_wrapper, #link div.current {height:125px;} +#image .panel_wrapper, #image div.current {height:200px;} +#plugintable thead {font-weight:bold; background:#DDD;} +#plugintable, #about #plugintable td {border:1px solid #919B9C;} +#plugintable {width:96%; margin-top:10px;} +#pluginscontainer {height:290px; overflow:auto;} +#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} +#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} +#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} +#colorpicker #light div {overflow:hidden;} +#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} +#colorpicker .panel_wrapper div.current {height:175px;} +#colorpicker #namedcolors {width:150px;} +#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} +#colorpicker #colornamecontainer {margin-top:5px;} +#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/ui.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/ui.css old mode 100755 new mode 100644 index 0049c7b3..7f6cf5fd --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/ui.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/default/ui.css @@ -1,213 +1,213 @@ -/* Reset */ -.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} -.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} -.defaultSkin table td {vertical-align:middle} - -/* Containers */ -.defaultSkin table {direction:ltr; background:#F0F0EE} -.defaultSkin iframe {display:block; background:#FFF} -.defaultSkin .mceToolbar {height:26px} -.defaultSkin .mceLeft {text-align:left} -.defaultSkin .mceRight {text-align:right} - -/* External */ -.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;} -.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} -.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} - -/* Layout */ -.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC} -.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC} -.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC} -.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} -.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top} -.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC} -.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} -.defaultSkin .mceStatusbar div {float:left; margin:2px} -.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} -.defaultSkin .mceStatusbar a:hover {text-decoration:underline} -.defaultSkin table.mceToolbar {margin-left:3px} -.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} -.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} -.defaultSkin td.mceCenter {text-align:center;} -.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;} -.defaultSkin td.mceRight table {margin:0 0 0 auto;} - -/* Button */ -.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px} -.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} -.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.defaultSkin .mceButtonLabeled {width:auto} -.defaultSkin .mceButtonLabeled span.mceIcon {float:left} -.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} -.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} - -/* Separator */ -.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} - -/* ListBox */ -.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} -.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} -.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} -.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF} -.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0} -.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;} -.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden} -.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px} -.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;} -.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} - -/* SplitButton */ -.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} -.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} -.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} -.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);} -.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} -.defaultSkin .mceSplitButton span.mceOpen {display:none} -.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} -.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} -.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} - -/* ColorSplitButton */ -.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} -.defaultSkin .mceColorSplitMenu td {padding:2px} -.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} -.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} -.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} -.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} -.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} -.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} -.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} - -/* Menu */ -.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8} -.defaultSkin .mceNoIcons span.mceIcon {width:0;} -.defaultSkin .mceNoIcons a .mceText {padding-left:10px} -.defaultSkin .mceMenu table {background:#FFF} -.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block} -.defaultSkin .mceMenu td {height:20px} -.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0} -.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} -.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px} -.defaultSkin .mceMenu pre.mceText {font-family:Monospace} -.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} -.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3} -.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px} -.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD} -.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} -.defaultSkin .mceMenuItemDisabled .mceText {color:#888} -.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)} -.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center} -.defaultSkin .mceMenu span.mceMenuLine {display:none} -.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} - -/* Progress,Resize */ -.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} -.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} - -/* Formats */ -.defaultSkin .mce_formatPreview a {font-size:10px} -.defaultSkin .mce_p span.mceText {} -.defaultSkin .mce_address span.mceText {font-style:italic} -.defaultSkin .mce_pre span.mceText {font-family:monospace} -.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} -.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} -.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} -.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} -.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} -.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} - -/* Theme */ -.defaultSkin span.mce_bold {background-position:0 0} -.defaultSkin span.mce_italic {background-position:-60px 0} -.defaultSkin span.mce_underline {background-position:-140px 0} -.defaultSkin span.mce_strikethrough {background-position:-120px 0} -.defaultSkin span.mce_undo {background-position:-160px 0} -.defaultSkin span.mce_redo {background-position:-100px 0} -.defaultSkin span.mce_cleanup {background-position:-40px 0} -.defaultSkin span.mce_bullist {background-position:-20px 0} -.defaultSkin span.mce_numlist {background-position:-80px 0} -.defaultSkin span.mce_justifyleft {background-position:-460px 0} -.defaultSkin span.mce_justifyright {background-position:-480px 0} -.defaultSkin span.mce_justifycenter {background-position:-420px 0} -.defaultSkin span.mce_justifyfull {background-position:-440px 0} -.defaultSkin span.mce_anchor {background-position:-200px 0} -.defaultSkin span.mce_indent {background-position:-400px 0} -.defaultSkin span.mce_outdent {background-position:-540px 0} -.defaultSkin span.mce_link {background-position:-500px 0} -.defaultSkin span.mce_unlink {background-position:-640px 0} -.defaultSkin span.mce_sub {background-position:-600px 0} -.defaultSkin span.mce_sup {background-position:-620px 0} -.defaultSkin span.mce_removeformat {background-position:-580px 0} -.defaultSkin span.mce_newdocument {background-position:-520px 0} -.defaultSkin span.mce_image {background-position:-380px 0} -.defaultSkin span.mce_help {background-position:-340px 0} -.defaultSkin span.mce_code {background-position:-260px 0} -.defaultSkin span.mce_hr {background-position:-360px 0} -.defaultSkin span.mce_visualaid {background-position:-660px 0} -.defaultSkin span.mce_charmap {background-position:-240px 0} -.defaultSkin span.mce_paste {background-position:-560px 0} -.defaultSkin span.mce_copy {background-position:-700px 0} -.defaultSkin span.mce_cut {background-position:-680px 0} -.defaultSkin span.mce_blockquote {background-position:-220px 0} -.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} -.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} -.defaultSkin span.mce_forecolorpicker {background-position:-720px 0} -.defaultSkin span.mce_backcolorpicker {background-position:-760px 0} - -/* Plugins */ -.defaultSkin span.mce_advhr {background-position:-0px -20px} -.defaultSkin span.mce_ltr {background-position:-20px -20px} -.defaultSkin span.mce_rtl {background-position:-40px -20px} -.defaultSkin span.mce_emotions {background-position:-60px -20px} -.defaultSkin span.mce_fullpage {background-position:-80px -20px} -.defaultSkin span.mce_fullscreen {background-position:-100px -20px} -.defaultSkin span.mce_iespell {background-position:-120px -20px} -.defaultSkin span.mce_insertdate {background-position:-140px -20px} -.defaultSkin span.mce_inserttime {background-position:-160px -20px} -.defaultSkin span.mce_absolute {background-position:-180px -20px} -.defaultSkin span.mce_backward {background-position:-200px -20px} -.defaultSkin span.mce_forward {background-position:-220px -20px} -.defaultSkin span.mce_insert_layer {background-position:-240px -20px} -.defaultSkin span.mce_insertlayer {background-position:-260px -20px} -.defaultSkin span.mce_movebackward {background-position:-280px -20px} -.defaultSkin span.mce_moveforward {background-position:-300px -20px} -.defaultSkin span.mce_media {background-position:-320px -20px} -.defaultSkin span.mce_nonbreaking {background-position:-340px -20px} -.defaultSkin span.mce_pastetext {background-position:-360px -20px} -.defaultSkin span.mce_pasteword {background-position:-380px -20px} -.defaultSkin span.mce_selectall {background-position:-400px -20px} -.defaultSkin span.mce_preview {background-position:-420px -20px} -.defaultSkin span.mce_print {background-position:-440px -20px} -.defaultSkin span.mce_cancel {background-position:-460px -20px} -.defaultSkin span.mce_save {background-position:-480px -20px} -.defaultSkin span.mce_replace {background-position:-500px -20px} -.defaultSkin span.mce_search {background-position:-520px -20px} -.defaultSkin span.mce_styleprops {background-position:-560px -20px} -.defaultSkin span.mce_table {background-position:-580px -20px} -.defaultSkin span.mce_cell_props {background-position:-600px -20px} -.defaultSkin span.mce_delete_table {background-position:-620px -20px} -.defaultSkin span.mce_delete_col {background-position:-640px -20px} -.defaultSkin span.mce_delete_row {background-position:-660px -20px} -.defaultSkin span.mce_col_after {background-position:-680px -20px} -.defaultSkin span.mce_col_before {background-position:-700px -20px} -.defaultSkin span.mce_row_after {background-position:-720px -20px} -.defaultSkin span.mce_row_before {background-position:-740px -20px} -.defaultSkin span.mce_merge_cells {background-position:-760px -20px} -.defaultSkin span.mce_table_props {background-position:-980px -20px} -.defaultSkin span.mce_row_props {background-position:-780px -20px} -.defaultSkin span.mce_split_cells {background-position:-800px -20px} -.defaultSkin span.mce_template {background-position:-820px -20px} -.defaultSkin span.mce_visualchars {background-position:-840px -20px} -.defaultSkin span.mce_abbr {background-position:-860px -20px} -.defaultSkin span.mce_acronym {background-position:-880px -20px} -.defaultSkin span.mce_attribs {background-position:-900px -20px} -.defaultSkin span.mce_cite {background-position:-920px -20px} -.defaultSkin span.mce_del {background-position:-940px -20px} -.defaultSkin span.mce_ins {background-position:-960px -20px} -.defaultSkin span.mce_pagebreak {background-position:0 -40px} -.defaultSkin span.mce_restoredraft {background-position:-20px -40px} -.defaultSkin span.mce_spellchecker {background-position:-540px -20px} +/* Reset */ +.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} +.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} +.defaultSkin table td {vertical-align:middle} + +/* Containers */ +.defaultSkin table {direction:ltr; background:#F0F0EE} +.defaultSkin iframe {display:block; background:#FFF} +.defaultSkin .mceToolbar {height:26px} +.defaultSkin .mceLeft {text-align:left} +.defaultSkin .mceRight {text-align:right} + +/* External */ +.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;} +.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} +.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} + +/* Layout */ +.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC} +.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC} +.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC} +.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} +.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top} +.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC} +.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} +.defaultSkin .mceStatusbar div {float:left; margin:2px} +.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} +.defaultSkin .mceStatusbar a:hover {text-decoration:underline} +.defaultSkin table.mceToolbar {margin-left:3px} +.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} +.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} +.defaultSkin td.mceCenter {text-align:center;} +.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;} +.defaultSkin td.mceRight table {margin:0 0 0 auto;} + +/* Button */ +.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px} +.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} +.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.defaultSkin .mceButtonLabeled {width:auto} +.defaultSkin .mceButtonLabeled span.mceIcon {float:left} +.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} + +/* Separator */ +.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} + +/* ListBox */ +.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} +.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} +.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} +.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF} +.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0} +.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;} +.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden} +.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px} +.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;} +.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} + +/* SplitButton */ +.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} +.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} +.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} +.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);} +.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} +.defaultSkin .mceSplitButton span.mceOpen {display:none} +.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} +.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} +.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} + +/* ColorSplitButton */ +.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} +.defaultSkin .mceColorSplitMenu td {padding:2px} +.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} +.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} +.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} +.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} +.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} +.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} +.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} + +/* Menu */ +.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8} +.defaultSkin .mceNoIcons span.mceIcon {width:0;} +.defaultSkin .mceNoIcons a .mceText {padding-left:10px} +.defaultSkin .mceMenu table {background:#FFF} +.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block} +.defaultSkin .mceMenu td {height:20px} +.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0} +.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} +.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px} +.defaultSkin .mceMenu pre.mceText {font-family:Monospace} +.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} +.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3} +.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px} +.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD} +.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} +.defaultSkin .mceMenuItemDisabled .mceText {color:#888} +.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)} +.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center} +.defaultSkin .mceMenu span.mceMenuLine {display:none} +.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} + +/* Progress,Resize */ +.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} +.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} + +/* Formats */ +.defaultSkin .mce_formatPreview a {font-size:10px} +.defaultSkin .mce_p span.mceText {} +.defaultSkin .mce_address span.mceText {font-style:italic} +.defaultSkin .mce_pre span.mceText {font-family:monospace} +.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} +.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} +.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} +.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} +.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} +.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} + +/* Theme */ +.defaultSkin span.mce_bold {background-position:0 0} +.defaultSkin span.mce_italic {background-position:-60px 0} +.defaultSkin span.mce_underline {background-position:-140px 0} +.defaultSkin span.mce_strikethrough {background-position:-120px 0} +.defaultSkin span.mce_undo {background-position:-160px 0} +.defaultSkin span.mce_redo {background-position:-100px 0} +.defaultSkin span.mce_cleanup {background-position:-40px 0} +.defaultSkin span.mce_bullist {background-position:-20px 0} +.defaultSkin span.mce_numlist {background-position:-80px 0} +.defaultSkin span.mce_justifyleft {background-position:-460px 0} +.defaultSkin span.mce_justifyright {background-position:-480px 0} +.defaultSkin span.mce_justifycenter {background-position:-420px 0} +.defaultSkin span.mce_justifyfull {background-position:-440px 0} +.defaultSkin span.mce_anchor {background-position:-200px 0} +.defaultSkin span.mce_indent {background-position:-400px 0} +.defaultSkin span.mce_outdent {background-position:-540px 0} +.defaultSkin span.mce_link {background-position:-500px 0} +.defaultSkin span.mce_unlink {background-position:-640px 0} +.defaultSkin span.mce_sub {background-position:-600px 0} +.defaultSkin span.mce_sup {background-position:-620px 0} +.defaultSkin span.mce_removeformat {background-position:-580px 0} +.defaultSkin span.mce_newdocument {background-position:-520px 0} +.defaultSkin span.mce_image {background-position:-380px 0} +.defaultSkin span.mce_help {background-position:-340px 0} +.defaultSkin span.mce_code {background-position:-260px 0} +.defaultSkin span.mce_hr {background-position:-360px 0} +.defaultSkin span.mce_visualaid {background-position:-660px 0} +.defaultSkin span.mce_charmap {background-position:-240px 0} +.defaultSkin span.mce_paste {background-position:-560px 0} +.defaultSkin span.mce_copy {background-position:-700px 0} +.defaultSkin span.mce_cut {background-position:-680px 0} +.defaultSkin span.mce_blockquote {background-position:-220px 0} +.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} +.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} +.defaultSkin span.mce_forecolorpicker {background-position:-720px 0} +.defaultSkin span.mce_backcolorpicker {background-position:-760px 0} + +/* Plugins */ +.defaultSkin span.mce_advhr {background-position:-0px -20px} +.defaultSkin span.mce_ltr {background-position:-20px -20px} +.defaultSkin span.mce_rtl {background-position:-40px -20px} +.defaultSkin span.mce_emotions {background-position:-60px -20px} +.defaultSkin span.mce_fullpage {background-position:-80px -20px} +.defaultSkin span.mce_fullscreen {background-position:-100px -20px} +.defaultSkin span.mce_iespell {background-position:-120px -20px} +.defaultSkin span.mce_insertdate {background-position:-140px -20px} +.defaultSkin span.mce_inserttime {background-position:-160px -20px} +.defaultSkin span.mce_absolute {background-position:-180px -20px} +.defaultSkin span.mce_backward {background-position:-200px -20px} +.defaultSkin span.mce_forward {background-position:-220px -20px} +.defaultSkin span.mce_insert_layer {background-position:-240px -20px} +.defaultSkin span.mce_insertlayer {background-position:-260px -20px} +.defaultSkin span.mce_movebackward {background-position:-280px -20px} +.defaultSkin span.mce_moveforward {background-position:-300px -20px} +.defaultSkin span.mce_media {background-position:-320px -20px} +.defaultSkin span.mce_nonbreaking {background-position:-340px -20px} +.defaultSkin span.mce_pastetext {background-position:-360px -20px} +.defaultSkin span.mce_pasteword {background-position:-380px -20px} +.defaultSkin span.mce_selectall {background-position:-400px -20px} +.defaultSkin span.mce_preview {background-position:-420px -20px} +.defaultSkin span.mce_print {background-position:-440px -20px} +.defaultSkin span.mce_cancel {background-position:-460px -20px} +.defaultSkin span.mce_save {background-position:-480px -20px} +.defaultSkin span.mce_replace {background-position:-500px -20px} +.defaultSkin span.mce_search {background-position:-520px -20px} +.defaultSkin span.mce_styleprops {background-position:-560px -20px} +.defaultSkin span.mce_table {background-position:-580px -20px} +.defaultSkin span.mce_cell_props {background-position:-600px -20px} +.defaultSkin span.mce_delete_table {background-position:-620px -20px} +.defaultSkin span.mce_delete_col {background-position:-640px -20px} +.defaultSkin span.mce_delete_row {background-position:-660px -20px} +.defaultSkin span.mce_col_after {background-position:-680px -20px} +.defaultSkin span.mce_col_before {background-position:-700px -20px} +.defaultSkin span.mce_row_after {background-position:-720px -20px} +.defaultSkin span.mce_row_before {background-position:-740px -20px} +.defaultSkin span.mce_merge_cells {background-position:-760px -20px} +.defaultSkin span.mce_table_props {background-position:-980px -20px} +.defaultSkin span.mce_row_props {background-position:-780px -20px} +.defaultSkin span.mce_split_cells {background-position:-800px -20px} +.defaultSkin span.mce_template {background-position:-820px -20px} +.defaultSkin span.mce_visualchars {background-position:-840px -20px} +.defaultSkin span.mce_abbr {background-position:-860px -20px} +.defaultSkin span.mce_acronym {background-position:-880px -20px} +.defaultSkin span.mce_attribs {background-position:-900px -20px} +.defaultSkin span.mce_cite {background-position:-920px -20px} +.defaultSkin span.mce_del {background-position:-940px -20px} +.defaultSkin span.mce_ins {background-position:-960px -20px} +.defaultSkin span.mce_pagebreak {background-position:0 -40px} +.defaultSkin span.mce_restoredraft {background-position:-20px -40px} +.defaultSkin span.mce_spellchecker {background-position:-540px -20px} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css old mode 100755 new mode 100644 index 3cea5ff1..3cf289e4 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css @@ -1,35 +1,35 @@ -body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} -body {background:#FFF;} -body.mceForceColors {background:#FFF; color:#000;} -h1 {font-size: 2em} -h2 {font-size: 1.5em} -h3 {font-size: 1.17em} -h4 {font-size: 1em} -h5 {font-size: .83em} -h6 {font-size: .75em} -.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} -td.mceSelected, th.mceSelected {background-color:#3399ff !important} -img {border:0;} -table {cursor:default} -table td, table th {cursor:text} -ins {border-bottom:1px solid green; text-decoration: none; color:green} -del {color:red; text-decoration:line-through} -cite {border-bottom:1px dashed blue} -acronym {border-bottom:1px dotted #CCC; cursor:help} -abbr {border-bottom:1px dashed #CCC; cursor:help} - -/* IE */ -* html body { -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -} - -img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} -font[face=mceinline] {font-family:inherit !important} +body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} +body {background:#FFF;} +body.mceForceColors {background:#FFF; color:#000;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} +td.mceSelected, th.mceSelected {background-color:#3399ff !important} +img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr {border-bottom:1px dashed #CCC; cursor:help} + +/* IE */ +* html body { +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +} + +img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} +font[face=mceinline] {font-family:inherit !important} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css old mode 100755 new mode 100644 index e3af1396..3b0760a6 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css @@ -1,116 +1,116 @@ -/* Generic */ -body { -font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDDDDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -background:#F0F0EE; -padding:0; -margin:8px 8px 0 8px; -} - -html {background:#F0F0EE;} -td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -textarea {resize:none;outline:none;} -a:link, a:visited {color:black;} -a:hover {color:#2B6FB6;} -.nowrap {white-space: nowrap} - -/* Forms */ -fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} -legend {color:#2B6FB6; font-weight:bold;} -label.msg {display:none;} -label.invalid {color:#EE0000; display:inline;} -input.invalid {border:1px solid #EE0000;} -input {background:#FFF; border:1px solid #CCC;} -input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -input, select, textarea {border:1px solid #808080;} -input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} -input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} -.input_noborder {border:0;} - -/* Buttons */ -#insert, #cancel, input.button, .updateButton { -border:0; margin:0; padding:0; -font-weight:bold; -width:94px; height:26px; -background:url(../default/img/buttons.png) 0 -26px; -cursor:pointer; -padding-bottom:2px; -float:left; -} - -#insert {background:url(../default/img/buttons.png) 0 -52px} -#cancel {background:url(../default/img/buttons.png) 0 0; float:right} - -/* Browse */ -a.pickcolor, a.browse {text-decoration:none} -a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} -.mceOldBoxModel a.browse span {width:22px; height:20px;} -a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} -a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} -.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} -a.pickcolor:hover span {background-color:#B2BBD0;} -a.pickcolor:hover span.disabled {} - -/* Charmap */ -table.charmap {border:1px solid #AAA; text-align:center} -td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} -#charmap a {display:block; color:#000; text-decoration:none; border:0} -#charmap a:hover {background:#CCC;color:#2B6FB6} -#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} -#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} - -/* Source */ -.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} -.mceActionPanel {margin-top:5px;} - -/* Tabs classes */ -.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;} -.tabs ul {margin:0; padding:0; list-style:none;} -.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} -.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} -.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} -.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;} -.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} -.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} - -/* Panels */ -.panel_wrapper div.panel {display:none;} -.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} -.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} - -/* Columns */ -.column {float:left;} -.properties {width:100%;} -.properties .column1 {} -.properties .column2 {text-align:left;} - -/* Titles */ -h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} -h3 {font-size:14px;} -.title {font-size:12px; font-weight:bold; color:#2B6FB6;} - -/* Dialog specific */ -#link .panel_wrapper, #link div.current {height:125px;} -#image .panel_wrapper, #image div.current {height:200px;} -#plugintable thead {font-weight:bold; background:#DDD;} -#plugintable, #about #plugintable td {border:1px solid #919B9C;} -#plugintable {width:96%; margin-top:10px;} -#pluginscontainer {height:290px; overflow:auto;} -#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} -#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} -#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} -#colorpicker #light div {overflow:hidden;} -#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} -#colorpicker .panel_wrapper div.current {height:175px;} -#colorpicker #namedcolors {width:150px;} -#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} -#colorpicker #colornamecontainer {margin-top:5px;} +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDDDDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +background:#F0F0EE; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#F0F0EE;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;} +a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} + +/* Forms */ +fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} +legend {color:#2B6FB6; font-weight:bold;} +label.msg {display:none;} +label.invalid {color:#EE0000; display:inline;} +input.invalid {border:1px solid #EE0000;} +input {background:#FFF; border:1px solid #CCC;} +input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +input, select, textarea {border:1px solid #808080;} +input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} +input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} +.input_noborder {border:0;} + +/* Buttons */ +#insert, #cancel, input.button, .updateButton { +border:0; margin:0; padding:0; +font-weight:bold; +width:94px; height:26px; +background:url(../default/img/buttons.png) 0 -26px; +cursor:pointer; +padding-bottom:2px; +float:left; +} + +#insert {background:url(../default/img/buttons.png) 0 -52px} +#cancel {background:url(../default/img/buttons.png) 0 0; float:right} + +/* Browse */ +a.pickcolor, a.browse {text-decoration:none} +a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} +.mceOldBoxModel a.browse span {width:22px; height:20px;} +a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} +a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} +.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} +a.pickcolor:hover span {background-color:#B2BBD0;} +a.pickcolor:hover span.disabled {} + +/* Charmap */ +table.charmap {border:1px solid #AAA; text-align:center} +td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} +#charmap a {display:block; color:#000; text-decoration:none; border:0} +#charmap a:hover {background:#CCC;color:#2B6FB6} +#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} +#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} + +/* Source */ +.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} +.mceActionPanel {margin-top:5px;} + +/* Tabs classes */ +.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} +.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} +.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} +.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;} +.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} +.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} + +/* Panels */ +.panel_wrapper div.panel {display:none;} +.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} +.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} + +/* Columns */ +.column {float:left;} +.properties {width:100%;} +.properties .column1 {} +.properties .column2 {text-align:left;} + +/* Titles */ +h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} +h3 {font-size:14px;} +.title {font-size:12px; font-weight:bold; color:#2B6FB6;} + +/* Dialog specific */ +#link .panel_wrapper, #link div.current {height:125px;} +#image .panel_wrapper, #image div.current {height:200px;} +#plugintable thead {font-weight:bold; background:#DDD;} +#plugintable, #about #plugintable td {border:1px solid #919B9C;} +#plugintable {width:96%; margin-top:10px;} +#pluginscontainer {height:290px; overflow:auto;} +#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} +#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} +#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} +#colorpicker #light div {overflow:hidden;} +#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} +#colorpicker .panel_wrapper div.current {height:175px;} +#colorpicker #namedcolors {width:150px;} +#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} +#colorpicker #colornamecontainer {margin-top:5px;} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css old mode 100755 new mode 100644 index a6253976..52f5760f --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css @@ -1,215 +1,215 @@ -/* Reset */ -.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} -.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} -.o2k7Skin table td {vertical-align:middle} - -/* Containers */ -.o2k7Skin table {background:#E5EFFD} -.o2k7Skin iframe {display:block; background:#FFF} -.o2k7Skin .mceToolbar {height:26px} - -/* External */ -.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none} -.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;} -.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} - -/* Layout */ -.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD} -.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD} -.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} -.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} -.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} -.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} -.o2k7Skin .mceStatusbar div {float:left; padding:2px} -.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} -.o2k7Skin .mceStatusbar a:hover {text-decoration:underline} -.o2k7Skin table.mceToolbar {margin-left:3px} -.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} -.o2k7Skin .mceToolbar td.mceFirst span {margin:0} -.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} -.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} -.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} -.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} -.o2k7Skin td.mceCenter {text-align:center;} -.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;} -.o2k7Skin td.mceRight table {margin:0 0 0 auto;} - -/* Button */ -.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} -.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px} -.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} -.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} -.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} -.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.o2k7Skin .mceButtonLabeled {width:auto} -.o2k7Skin .mceButtonLabeled span.mceIcon {float:left} -.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} -.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} - -/* Separator */ -.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} - -/* ListBox */ -.o2k7Skin .mceListBox {margin-left:3px} -.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} -.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} -.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} -.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} -.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} -.o2k7Skin .mceListBoxDisabled .mceText {color:gray} -.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden} -.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} -.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} - -/* SplitButton */ -.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px} -.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} -.o2k7Skin .mceSplitButton a.mceAction {width:22px} -.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} -.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} -.o2k7Skin .mceSplitButton span.mceOpen {display:none} -.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} -.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} -.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.o2k7Skin .mceSplitButtonActive {background-position:0 -44px} - -/* ColorSplitButton */ -.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} -.o2k7Skin .mceColorSplitMenu td {padding:2px} -.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} -.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} -.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} -.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} -.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} -.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} -.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} - -/* Menu */ -.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD} -.o2k7Skin .mceNoIcons span.mceIcon {width:0;} -.o2k7Skin .mceNoIcons a .mceText {padding-left:10px} -.o2k7Skin .mceMenu table {background:#FFF} -.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block} -.o2k7Skin .mceMenu td {height:20px} -.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0} -.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} -.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px} -.o2k7Skin .mceMenu pre.mceText {font-family:Monospace} -.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} -.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3} -.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px} -.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD} -.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} -.o2k7Skin .mceMenuItemDisabled .mceText {color:#888} -.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)} -.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} -.o2k7Skin .mceMenu span.mceMenuLine {display:none} -.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} - -/* Progress,Resize */ -.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} -.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} - -/* Formats */ -.o2k7Skin .mce_formatPreview a {font-size:10px} -.o2k7Skin .mce_p span.mceText {} -.o2k7Skin .mce_address span.mceText {font-style:italic} -.o2k7Skin .mce_pre span.mceText {font-family:monospace} -.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} -.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} -.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} -.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} -.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} -.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} - -/* Theme */ -.o2k7Skin span.mce_bold {background-position:0 0} -.o2k7Skin span.mce_italic {background-position:-60px 0} -.o2k7Skin span.mce_underline {background-position:-140px 0} -.o2k7Skin span.mce_strikethrough {background-position:-120px 0} -.o2k7Skin span.mce_undo {background-position:-160px 0} -.o2k7Skin span.mce_redo {background-position:-100px 0} -.o2k7Skin span.mce_cleanup {background-position:-40px 0} -.o2k7Skin span.mce_bullist {background-position:-20px 0} -.o2k7Skin span.mce_numlist {background-position:-80px 0} -.o2k7Skin span.mce_justifyleft {background-position:-460px 0} -.o2k7Skin span.mce_justifyright {background-position:-480px 0} -.o2k7Skin span.mce_justifycenter {background-position:-420px 0} -.o2k7Skin span.mce_justifyfull {background-position:-440px 0} -.o2k7Skin span.mce_anchor {background-position:-200px 0} -.o2k7Skin span.mce_indent {background-position:-400px 0} -.o2k7Skin span.mce_outdent {background-position:-540px 0} -.o2k7Skin span.mce_link {background-position:-500px 0} -.o2k7Skin span.mce_unlink {background-position:-640px 0} -.o2k7Skin span.mce_sub {background-position:-600px 0} -.o2k7Skin span.mce_sup {background-position:-620px 0} -.o2k7Skin span.mce_removeformat {background-position:-580px 0} -.o2k7Skin span.mce_newdocument {background-position:-520px 0} -.o2k7Skin span.mce_image {background-position:-380px 0} -.o2k7Skin span.mce_help {background-position:-340px 0} -.o2k7Skin span.mce_code {background-position:-260px 0} -.o2k7Skin span.mce_hr {background-position:-360px 0} -.o2k7Skin span.mce_visualaid {background-position:-660px 0} -.o2k7Skin span.mce_charmap {background-position:-240px 0} -.o2k7Skin span.mce_paste {background-position:-560px 0} -.o2k7Skin span.mce_copy {background-position:-700px 0} -.o2k7Skin span.mce_cut {background-position:-680px 0} -.o2k7Skin span.mce_blockquote {background-position:-220px 0} -.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} -.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} -.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} -.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} - -/* Plugins */ -.o2k7Skin span.mce_advhr {background-position:-0px -20px} -.o2k7Skin span.mce_ltr {background-position:-20px -20px} -.o2k7Skin span.mce_rtl {background-position:-40px -20px} -.o2k7Skin span.mce_emotions {background-position:-60px -20px} -.o2k7Skin span.mce_fullpage {background-position:-80px -20px} -.o2k7Skin span.mce_fullscreen {background-position:-100px -20px} -.o2k7Skin span.mce_iespell {background-position:-120px -20px} -.o2k7Skin span.mce_insertdate {background-position:-140px -20px} -.o2k7Skin span.mce_inserttime {background-position:-160px -20px} -.o2k7Skin span.mce_absolute {background-position:-180px -20px} -.o2k7Skin span.mce_backward {background-position:-200px -20px} -.o2k7Skin span.mce_forward {background-position:-220px -20px} -.o2k7Skin span.mce_insert_layer {background-position:-240px -20px} -.o2k7Skin span.mce_insertlayer {background-position:-260px -20px} -.o2k7Skin span.mce_movebackward {background-position:-280px -20px} -.o2k7Skin span.mce_moveforward {background-position:-300px -20px} -.o2k7Skin span.mce_media {background-position:-320px -20px} -.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px} -.o2k7Skin span.mce_pastetext {background-position:-360px -20px} -.o2k7Skin span.mce_pasteword {background-position:-380px -20px} -.o2k7Skin span.mce_selectall {background-position:-400px -20px} -.o2k7Skin span.mce_preview {background-position:-420px -20px} -.o2k7Skin span.mce_print {background-position:-440px -20px} -.o2k7Skin span.mce_cancel {background-position:-460px -20px} -.o2k7Skin span.mce_save {background-position:-480px -20px} -.o2k7Skin span.mce_replace {background-position:-500px -20px} -.o2k7Skin span.mce_search {background-position:-520px -20px} -.o2k7Skin span.mce_styleprops {background-position:-560px -20px} -.o2k7Skin span.mce_table {background-position:-580px -20px} -.o2k7Skin span.mce_cell_props {background-position:-600px -20px} -.o2k7Skin span.mce_delete_table {background-position:-620px -20px} -.o2k7Skin span.mce_delete_col {background-position:-640px -20px} -.o2k7Skin span.mce_delete_row {background-position:-660px -20px} -.o2k7Skin span.mce_col_after {background-position:-680px -20px} -.o2k7Skin span.mce_col_before {background-position:-700px -20px} -.o2k7Skin span.mce_row_after {background-position:-720px -20px} -.o2k7Skin span.mce_row_before {background-position:-740px -20px} -.o2k7Skin span.mce_merge_cells {background-position:-760px -20px} -.o2k7Skin span.mce_table_props {background-position:-980px -20px} -.o2k7Skin span.mce_row_props {background-position:-780px -20px} -.o2k7Skin span.mce_split_cells {background-position:-800px -20px} -.o2k7Skin span.mce_template {background-position:-820px -20px} -.o2k7Skin span.mce_visualchars {background-position:-840px -20px} -.o2k7Skin span.mce_abbr {background-position:-860px -20px} -.o2k7Skin span.mce_acronym {background-position:-880px -20px} -.o2k7Skin span.mce_attribs {background-position:-900px -20px} -.o2k7Skin span.mce_cite {background-position:-920px -20px} -.o2k7Skin span.mce_del {background-position:-940px -20px} -.o2k7Skin span.mce_ins {background-position:-960px -20px} -.o2k7Skin span.mce_pagebreak {background-position:0 -40px} -.o2k7Skin span.mce_restoredraft {background-position:-20px -40px} -.o2k7Skin span.mce_spellchecker {background-position:-540px -20px} +/* Reset */ +.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} +.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} +.o2k7Skin table td {vertical-align:middle} + +/* Containers */ +.o2k7Skin table {background:#E5EFFD} +.o2k7Skin iframe {display:block; background:#FFF} +.o2k7Skin .mceToolbar {height:26px} + +/* External */ +.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none} +.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;} +.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} + +/* Layout */ +.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD} +.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD} +.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} +.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} +.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} +.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} +.o2k7Skin .mceStatusbar div {float:left; padding:2px} +.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} +.o2k7Skin .mceStatusbar a:hover {text-decoration:underline} +.o2k7Skin table.mceToolbar {margin-left:3px} +.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} +.o2k7Skin .mceToolbar td.mceFirst span {margin:0} +.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} +.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} +.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} +.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} +.o2k7Skin td.mceCenter {text-align:center;} +.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;} +.o2k7Skin td.mceRight table {margin:0 0 0 auto;} + +/* Button */ +.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} +.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px} +.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} +.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} +.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} +.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.o2k7Skin .mceButtonLabeled {width:auto} +.o2k7Skin .mceButtonLabeled span.mceIcon {float:left} +.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} + +/* Separator */ +.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} + +/* ListBox */ +.o2k7Skin .mceListBox {margin-left:3px} +.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} +.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} +.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} +.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} +.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} +.o2k7Skin .mceListBoxDisabled .mceText {color:gray} +.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden} +.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} +.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} + +/* SplitButton */ +.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px} +.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} +.o2k7Skin .mceSplitButton a.mceAction {width:22px} +.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} +.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} +.o2k7Skin .mceSplitButton span.mceOpen {display:none} +.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} +.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} +.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.o2k7Skin .mceSplitButtonActive {background-position:0 -44px} + +/* ColorSplitButton */ +.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} +.o2k7Skin .mceColorSplitMenu td {padding:2px} +.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} +.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} +.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} +.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} +.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} +.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} +.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} + +/* Menu */ +.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD} +.o2k7Skin .mceNoIcons span.mceIcon {width:0;} +.o2k7Skin .mceNoIcons a .mceText {padding-left:10px} +.o2k7Skin .mceMenu table {background:#FFF} +.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block} +.o2k7Skin .mceMenu td {height:20px} +.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0} +.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} +.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px} +.o2k7Skin .mceMenu pre.mceText {font-family:Monospace} +.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} +.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3} +.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px} +.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD} +.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} +.o2k7Skin .mceMenuItemDisabled .mceText {color:#888} +.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)} +.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} +.o2k7Skin .mceMenu span.mceMenuLine {display:none} +.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} + +/* Progress,Resize */ +.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} +.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} + +/* Formats */ +.o2k7Skin .mce_formatPreview a {font-size:10px} +.o2k7Skin .mce_p span.mceText {} +.o2k7Skin .mce_address span.mceText {font-style:italic} +.o2k7Skin .mce_pre span.mceText {font-family:monospace} +.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} +.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} +.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} +.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} +.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} +.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} + +/* Theme */ +.o2k7Skin span.mce_bold {background-position:0 0} +.o2k7Skin span.mce_italic {background-position:-60px 0} +.o2k7Skin span.mce_underline {background-position:-140px 0} +.o2k7Skin span.mce_strikethrough {background-position:-120px 0} +.o2k7Skin span.mce_undo {background-position:-160px 0} +.o2k7Skin span.mce_redo {background-position:-100px 0} +.o2k7Skin span.mce_cleanup {background-position:-40px 0} +.o2k7Skin span.mce_bullist {background-position:-20px 0} +.o2k7Skin span.mce_numlist {background-position:-80px 0} +.o2k7Skin span.mce_justifyleft {background-position:-460px 0} +.o2k7Skin span.mce_justifyright {background-position:-480px 0} +.o2k7Skin span.mce_justifycenter {background-position:-420px 0} +.o2k7Skin span.mce_justifyfull {background-position:-440px 0} +.o2k7Skin span.mce_anchor {background-position:-200px 0} +.o2k7Skin span.mce_indent {background-position:-400px 0} +.o2k7Skin span.mce_outdent {background-position:-540px 0} +.o2k7Skin span.mce_link {background-position:-500px 0} +.o2k7Skin span.mce_unlink {background-position:-640px 0} +.o2k7Skin span.mce_sub {background-position:-600px 0} +.o2k7Skin span.mce_sup {background-position:-620px 0} +.o2k7Skin span.mce_removeformat {background-position:-580px 0} +.o2k7Skin span.mce_newdocument {background-position:-520px 0} +.o2k7Skin span.mce_image {background-position:-380px 0} +.o2k7Skin span.mce_help {background-position:-340px 0} +.o2k7Skin span.mce_code {background-position:-260px 0} +.o2k7Skin span.mce_hr {background-position:-360px 0} +.o2k7Skin span.mce_visualaid {background-position:-660px 0} +.o2k7Skin span.mce_charmap {background-position:-240px 0} +.o2k7Skin span.mce_paste {background-position:-560px 0} +.o2k7Skin span.mce_copy {background-position:-700px 0} +.o2k7Skin span.mce_cut {background-position:-680px 0} +.o2k7Skin span.mce_blockquote {background-position:-220px 0} +.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} +.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} +.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} +.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} + +/* Plugins */ +.o2k7Skin span.mce_advhr {background-position:-0px -20px} +.o2k7Skin span.mce_ltr {background-position:-20px -20px} +.o2k7Skin span.mce_rtl {background-position:-40px -20px} +.o2k7Skin span.mce_emotions {background-position:-60px -20px} +.o2k7Skin span.mce_fullpage {background-position:-80px -20px} +.o2k7Skin span.mce_fullscreen {background-position:-100px -20px} +.o2k7Skin span.mce_iespell {background-position:-120px -20px} +.o2k7Skin span.mce_insertdate {background-position:-140px -20px} +.o2k7Skin span.mce_inserttime {background-position:-160px -20px} +.o2k7Skin span.mce_absolute {background-position:-180px -20px} +.o2k7Skin span.mce_backward {background-position:-200px -20px} +.o2k7Skin span.mce_forward {background-position:-220px -20px} +.o2k7Skin span.mce_insert_layer {background-position:-240px -20px} +.o2k7Skin span.mce_insertlayer {background-position:-260px -20px} +.o2k7Skin span.mce_movebackward {background-position:-280px -20px} +.o2k7Skin span.mce_moveforward {background-position:-300px -20px} +.o2k7Skin span.mce_media {background-position:-320px -20px} +.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px} +.o2k7Skin span.mce_pastetext {background-position:-360px -20px} +.o2k7Skin span.mce_pasteword {background-position:-380px -20px} +.o2k7Skin span.mce_selectall {background-position:-400px -20px} +.o2k7Skin span.mce_preview {background-position:-420px -20px} +.o2k7Skin span.mce_print {background-position:-440px -20px} +.o2k7Skin span.mce_cancel {background-position:-460px -20px} +.o2k7Skin span.mce_save {background-position:-480px -20px} +.o2k7Skin span.mce_replace {background-position:-500px -20px} +.o2k7Skin span.mce_search {background-position:-520px -20px} +.o2k7Skin span.mce_styleprops {background-position:-560px -20px} +.o2k7Skin span.mce_table {background-position:-580px -20px} +.o2k7Skin span.mce_cell_props {background-position:-600px -20px} +.o2k7Skin span.mce_delete_table {background-position:-620px -20px} +.o2k7Skin span.mce_delete_col {background-position:-640px -20px} +.o2k7Skin span.mce_delete_row {background-position:-660px -20px} +.o2k7Skin span.mce_col_after {background-position:-680px -20px} +.o2k7Skin span.mce_col_before {background-position:-700px -20px} +.o2k7Skin span.mce_row_after {background-position:-720px -20px} +.o2k7Skin span.mce_row_before {background-position:-740px -20px} +.o2k7Skin span.mce_merge_cells {background-position:-760px -20px} +.o2k7Skin span.mce_table_props {background-position:-980px -20px} +.o2k7Skin span.mce_row_props {background-position:-780px -20px} +.o2k7Skin span.mce_split_cells {background-position:-800px -20px} +.o2k7Skin span.mce_template {background-position:-820px -20px} +.o2k7Skin span.mce_visualchars {background-position:-840px -20px} +.o2k7Skin span.mce_abbr {background-position:-860px -20px} +.o2k7Skin span.mce_acronym {background-position:-880px -20px} +.o2k7Skin span.mce_attribs {background-position:-900px -20px} +.o2k7Skin span.mce_cite {background-position:-920px -20px} +.o2k7Skin span.mce_del {background-position:-940px -20px} +.o2k7Skin span.mce_ins {background-position:-960px -20px} +.o2k7Skin span.mce_pagebreak {background-position:0 -40px} +.o2k7Skin span.mce_restoredraft {background-position:-20px -40px} +.o2k7Skin span.mce_spellchecker {background-position:-540px -20px} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css old mode 100755 new mode 100644 index 153f0c38..81dbfe41 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css @@ -1,8 +1,8 @@ -/* Black */ -.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} -.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} -.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} -.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} -.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} -.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} +/* Black */ +.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} +.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} +.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} +.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} +.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} +.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} .o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css old mode 100755 new mode 100644 index 7fe3b45e..e8ae844f --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css @@ -1,5 +1,5 @@ -/* Silver */ -.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} -.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} -.o2k7SkinSilver .mceListBox .mceText {background:#FFF} -.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} +/* Silver */ +.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} +.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} +.o2k7SkinSilver .mceListBox .mceText {background:#FFF} +.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/source_editor.htm b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/source_editor.htm old mode 100755 new mode 100644 index 5957bbd1..78033fd3 --- a/src/lab/final-build/jscripts/tiny_mce/themes/advanced/source_editor.htm +++ b/src/lab/final-build/jscripts/tiny_mce/themes/advanced/source_editor.htm @@ -1,25 +1,25 @@ - - - {#advanced_dlg.code_title} - - - - -
    -
    {#advanced_dlg.code_title}
    - -
    - -
    - -
    - - - -
    - - -
    -
    - - + + + {#advanced_dlg.code_title} + + + + +
    +
    {#advanced_dlg.code_title}
    + +
    + +
    + +
    + + + +
    + + +
    +
    + + diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template.js b/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template_src.js b/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template_src.js old mode 100755 new mode 100644 index 4b862d49..ec9e9632 --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/editor_template_src.js @@ -1,85 +1,85 @@ -/** - * editor_template_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var DOM = tinymce.DOM; - - // Tell it to load theme specific language pack(s) - tinymce.ThemeManager.requireLangPack('simple'); - - tinymce.create('tinymce.themes.SimpleTheme', { - init : function(ed, url) { - var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings; - - t.editor = ed; - - ed.onInit.add(function() { - ed.onNodeChange.add(function(ed, cm) { - tinymce.each(states, function(c) { - cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c)); - }); - }); - - ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css"); - }); - - DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); - }, - - renderUI : function(o) { - var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc; - - n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n); - n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'}); - n = tb = DOM.add(n, 'tbody'); - - // Create iframe container - n = DOM.add(tb, 'tr'); - n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'}); - - // Create toolbar container - n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'}); - - // Create toolbar - tb = t.toolbar = cf.createToolbar("tools1"); - tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'})); - tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'})); - tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'})); - tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'})); - tb.add(cf.createSeparator()); - tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'})); - tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'})); - tb.add(cf.createSeparator()); - tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'})); - tb.add(cf.createSeparator()); - tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'})); - tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'})); - tb.renderTo(n); - - return { - iframeContainer : ic, - editorContainer : ed.id + '_container', - sizeContainer : sc, - deltaHeight : -20 - }; - }, - - getInfo : function() { - return { - longname : 'Simple theme', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - version : tinymce.majorVersion + "." + tinymce.minorVersion - } - } - }); - - tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme); +/** + * editor_template_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM; + + // Tell it to load theme specific language pack(s) + tinymce.ThemeManager.requireLangPack('simple'); + + tinymce.create('tinymce.themes.SimpleTheme', { + init : function(ed, url) { + var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings; + + t.editor = ed; + + ed.onInit.add(function() { + ed.onNodeChange.add(function(ed, cm) { + tinymce.each(states, function(c) { + cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c)); + }); + }); + + ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css"); + }); + + DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); + }, + + renderUI : function(o) { + var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc; + + n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n); + n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'}); + n = tb = DOM.add(n, 'tbody'); + + // Create iframe container + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'}); + + // Create toolbar container + n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'}); + + // Create toolbar + tb = t.toolbar = cf.createToolbar("tools1"); + tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'})); + tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'})); + tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'})); + tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'})); + tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'})); + tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'})); + tb.renderTo(n); + + return { + iframeContainer : ic, + editorContainer : ed.id + '_container', + sizeContainer : sc, + deltaHeight : -20 + }; + }, + + getInfo : function() { + return { + longname : 'Simple theme', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + version : tinymce.majorVersion + "." + tinymce.minorVersion + } + } + }); + + tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme); })(); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/img/icons.gif b/src/lab/final-build/jscripts/tiny_mce/themes/simple/img/icons.gif old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/langs/en.js b/src/lab/final-build/jscripts/tiny_mce/themes/simple/langs/en.js old mode 100755 new mode 100644 index 9f08f102..6f095311 --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/langs/en.js +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/langs/en.js @@ -1,11 +1,11 @@ -tinyMCE.addI18n('en.simple',{ -bold_desc:"Bold (Ctrl+B)", -italic_desc:"Italic (Ctrl+I)", -underline_desc:"Underline (Ctrl+U)", -striketrough_desc:"Strikethrough", -bullist_desc:"Unordered list", -numlist_desc:"Ordered list", -undo_desc:"Undo (Ctrl+Z)", -redo_desc:"Redo (Ctrl+Y)", -cleanup_desc:"Cleanup messy code" +tinyMCE.addI18n('en.simple',{ +bold_desc:"Bold (Ctrl+B)", +italic_desc:"Italic (Ctrl+I)", +underline_desc:"Underline (Ctrl+U)", +striketrough_desc:"Strikethrough", +bullist_desc:"Unordered list", +numlist_desc:"Ordered list", +undo_desc:"Undo (Ctrl+Z)", +redo_desc:"Redo (Ctrl+Y)", +cleanup_desc:"Cleanup messy code" }); \ No newline at end of file diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/content.css b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/content.css old mode 100755 new mode 100644 index 2506c807..783b170f --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/content.css @@ -1,25 +1,25 @@ -body, td, pre { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -body { - background-color: #FFFFFF; -} - -.mceVisualAid { - border: 1px dashed #BBBBBB; -} - -/* MSIE specific */ - -* html body { - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} +body, td, pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +body { + background-color: #FFFFFF; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB; +} + +/* MSIE specific */ + +* html body { + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/ui.css b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/ui.css old mode 100755 new mode 100644 index 076fe84e..32feae62 --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/ui.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/default/ui.css @@ -1,32 +1,32 @@ -/* Reset */ -.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} - -/* Containers */ -.defaultSimpleSkin {position:relative} -.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;} -.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;} -.defaultSimpleSkin .mceToolbar {height:24px;} - -/* Layout */ -.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px} -.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} - -/* Button */ -.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} -.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} -.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} - -/* Separator */ -.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} - -/* Theme */ -.defaultSimpleSkin span.mce_bold {background-position:0 0} -.defaultSimpleSkin span.mce_italic {background-position:-60px 0} -.defaultSimpleSkin span.mce_underline {background-position:-140px 0} -.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0} -.defaultSimpleSkin span.mce_undo {background-position:-160px 0} -.defaultSimpleSkin span.mce_redo {background-position:-100px 0} -.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0} -.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} -.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0} +/* Reset */ +.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} + +/* Containers */ +.defaultSimpleSkin {position:relative} +.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;} +.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;} +.defaultSimpleSkin .mceToolbar {height:24px;} + +/* Layout */ +.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px} +.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} + +/* Button */ +.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} +.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} +.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} + +/* Separator */ +.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} + +/* Theme */ +.defaultSimpleSkin span.mce_bold {background-position:0 0} +.defaultSimpleSkin span.mce_italic {background-position:-60px 0} +.defaultSimpleSkin span.mce_underline {background-position:-140px 0} +.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0} +.defaultSimpleSkin span.mce_undo {background-position:-160px 0} +.defaultSimpleSkin span.mce_redo {background-position:-100px 0} +.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0} +.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} +.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css old mode 100755 new mode 100644 index 595809fa..e10558f9 --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css @@ -1,17 +1,17 @@ -body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} - -body {background: #FFF;} -.mceVisualAid {border: 1px dashed #BBB;} - -/* IE */ - -* html body { -scrollbar-3dlight-color: #F0F0EE; -scrollbar-arrow-color: #676662; -scrollbar-base-color: #F0F0EE; -scrollbar-darkshadow-color: #DDDDDD; -scrollbar-face-color: #E0E0DD; -scrollbar-highlight-color: #F0F0EE; -scrollbar-shadow-color: #F0F0EE; -scrollbar-track-color: #F5F5F5; -} +body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} + +body {background: #FFF;} +.mceVisualAid {border: 1px dashed #BBB;} + +/* IE */ + +* html body { +scrollbar-3dlight-color: #F0F0EE; +scrollbar-arrow-color: #676662; +scrollbar-base-color: #F0F0EE; +scrollbar-darkshadow-color: #DDDDDD; +scrollbar-face-color: #E0E0DD; +scrollbar-highlight-color: #F0F0EE; +scrollbar-shadow-color: #F0F0EE; +scrollbar-track-color: #F5F5F5; +} diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css old mode 100755 new mode 100644 index cf6c35d1..021d650f --- a/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css +++ b/src/lab/final-build/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css @@ -1,35 +1,35 @@ -/* Reset */ -.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} - -/* Containers */ -.o2k7SimpleSkin {position:relative} -.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;} -.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;} -.o2k7SimpleSkin .mceToolbar {height:26px;} - -/* Layout */ -.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; } -.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} -.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px} -.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} - -/* Button */ -.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} -.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px} -.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} -.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px} -.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} - -/* Separator */ -.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} - -/* Theme */ -.o2k7SimpleSkin span.mce_bold {background-position:0 0} -.o2k7SimpleSkin span.mce_italic {background-position:-60px 0} -.o2k7SimpleSkin span.mce_underline {background-position:-140px 0} -.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0} -.o2k7SimpleSkin span.mce_undo {background-position:-160px 0} -.o2k7SimpleSkin span.mce_redo {background-position:-100px 0} -.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0} -.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} -.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0} +/* Reset */ +.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} + +/* Containers */ +.o2k7SimpleSkin {position:relative} +.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;} +.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;} +.o2k7SimpleSkin .mceToolbar {height:26px;} + +/* Layout */ +.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; } +.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} +.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px} +.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} + +/* Button */ +.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} +.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px} +.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} +.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px} +.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} + +/* Separator */ +.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} + +/* Theme */ +.o2k7SimpleSkin span.mce_bold {background-position:0 0} +.o2k7SimpleSkin span.mce_italic {background-position:-60px 0} +.o2k7SimpleSkin span.mce_underline {background-position:-140px 0} +.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0} +.o2k7SimpleSkin span.mce_undo {background-position:-160px 0} +.o2k7SimpleSkin span.mce_redo {background-position:-100px 0} +.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0} +.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} +.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0} diff --git a/src/lab/final-build/jscripts/tiny_mce/tiny_mce.js b/src/lab/final-build/jscripts/tiny_mce/tiny_mce.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/tiny_mce_popup.js b/src/lab/final-build/jscripts/tiny_mce/tiny_mce_popup.js old mode 100755 new mode 100644 diff --git a/src/lab/final-build/jscripts/tiny_mce/tiny_mce_src.js b/src/lab/final-build/jscripts/tiny_mce/tiny_mce_src.js old mode 100755 new mode 100644 index 3769dc51..e0b7f0f0 --- a/src/lab/final-build/jscripts/tiny_mce/tiny_mce_src.js +++ b/src/lab/final-build/jscripts/tiny_mce/tiny_mce_src.js @@ -1,13913 +1,13913 @@ -(function(win) { - var whiteSpaceRe = /^\s*|\s*$/g, - undefined; - - var tinymce = { - majorVersion : '3', - - minorVersion : '3.5.1', - - releaseDate : '2010-05-07', - - _init : function() { - var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v; - - t.isOpera = win.opera && opera.buildNumber; - - t.isWebKit = /WebKit/.test(ua); - - t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName); - - t.isIE6 = t.isIE && /MSIE [56]/.test(ua); - - t.isGecko = !t.isWebKit && /Gecko/.test(ua); - - t.isMac = ua.indexOf('Mac') != -1; - - t.isAir = /adobeair/i.test(ua); - - t.isIDevice = /(iPad|iPhone)/.test(ua); - - // TinyMCE .NET webcontrol might be setting the values for TinyMCE - if (win.tinyMCEPreInit) { - t.suffix = tinyMCEPreInit.suffix; - t.baseURL = tinyMCEPreInit.base; - t.query = tinyMCEPreInit.query; - return; - } - - // Get suffix and base - t.suffix = ''; - - // If base element found, add that infront of baseURL - nl = d.getElementsByTagName('base'); - for (i=0; i : - s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s); - cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name - - // Create namespace for new class - ns = t.createNS(s[3].replace(/\.\w+$/, '')); - - // Class already exists - if (ns[cn]) - return; - - // Make pure static class - if (s[2] == 'static') { - ns[cn] = p; - - if (this.onCreate) - this.onCreate(s[2], s[3], ns[cn]); - - return; - } - - // Create default constructor - if (!p[cn]) { - p[cn] = function() {}; - de = 1; - } - - // Add constructor and methods - ns[cn] = p[cn]; - t.extend(ns[cn].prototype, p); - - // Extend - if (s[5]) { - sp = t.resolve(s[5]).prototype; - scn = s[5].match(/\.(\w+)$/i)[1]; // Class name - - // Extend constructor - c = ns[cn]; - if (de) { - // Add passthrough constructor - ns[cn] = function() { - return sp[scn].apply(this, arguments); - }; - } else { - // Add inherit constructor - ns[cn] = function() { - this.parent = sp[scn]; - return c.apply(this, arguments); - }; - } - ns[cn].prototype[cn] = ns[cn]; - - // Add super methods - t.each(sp, function(f, n) { - ns[cn].prototype[n] = sp[n]; - }); - - // Add overridden methods - t.each(p, function(f, n) { - // Extend methods if needed - if (sp[n]) { - ns[cn].prototype[n] = function() { - this.parent = sp[n]; - return f.apply(this, arguments); - }; - } else { - if (n != cn) - ns[cn].prototype[n] = f; - } - }); - } - - // Add static methods - t.each(p['static'], function(f, n) { - ns[cn][n] = f; - }); - - if (this.onCreate) - this.onCreate(s[2], s[3], ns[cn].prototype); - }, - - walk : function(o, f, n, s) { - s = s || this; - - if (o) { - if (n) - o = o[n]; - - tinymce.each(o, function(o, i) { - if (f.call(s, o, i, n) === false) - return false; - - tinymce.walk(o, f, n, s); - }); - } - }, - - createNS : function(n, o) { - var i, v; - - o = o || win; - - n = n.split('.'); - for (i=0; i= items.length) { - for (i = 0, l = base.length; i < l; i++) { - if (i >= items.length || base[i] != items[i]) { - bp = i + 1; - break; - } - } - } - - if (base.length < items.length) { - for (i = 0, l = items.length; i < l; i++) { - if (i >= base.length || base[i] != items[i]) { - bp = i + 1; - break; - } - } - } - - if (bp == 1) - return path; - - for (i = 0, l = base.length - (bp - 1); i < l; i++) - out += "../"; - - for (i = bp - 1, l = items.length; i < l; i++) { - if (i != bp - 1) - out += "/" + items[i]; - else - out += items[i]; - } - - return out; - }, - - toAbsPath : function(base, path) { - var i, nb = 0, o = [], tr, outPath; - - // Split paths - tr = /\/$/.test(path) ? '/' : ''; - base = base.split('/'); - path = path.split('/'); - - // Remove empty chunks - each(base, function(k) { - if (k) - o.push(k); - }); - - base = o; - - // Merge relURLParts chunks - for (i = path.length - 1, o = []; i >= 0; i--) { - // Ignore empty or . - if (path[i].length == 0 || path[i] == ".") - continue; - - // Is parent - if (path[i] == '..') { - nb++; - continue; - } - - // Move up - if (nb > 0) { - nb--; - continue; - } - - o.push(path[i]); - } - - i = base.length - nb; - - // If /a/b/c or / - if (i <= 0) - outPath = o.reverse().join('/'); - else - outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); - - // Add front / if it's needed - if (outPath.indexOf('/') !== 0) - outPath = '/' + outPath; - - // Add traling / if it's needed - if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) - outPath += tr; - - return outPath; - }, - - getURI : function(nh) { - var s, t = this; - - // Rebuild source - if (!t.source || nh) { - s = ''; - - if (!nh) { - if (t.protocol) - s += t.protocol + '://'; - - if (t.userInfo) - s += t.userInfo + '@'; - - if (t.host) - s += t.host; - - if (t.port) - s += ':' + t.port; - } - - if (t.path) - s += t.path; - - if (t.query) - s += '?' + t.query; - - if (t.anchor) - s += '#' + t.anchor; - - t.source = s; - } - - return t.source; - } - }); -})(); - -(function() { - var each = tinymce.each; - - tinymce.create('static tinymce.util.Cookie', { - getHash : function(n) { - var v = this.get(n), h; - - if (v) { - each(v.split('&'), function(v) { - v = v.split('='); - h = h || {}; - h[unescape(v[0])] = unescape(v[1]); - }); - } - - return h; - }, - - setHash : function(n, v, e, p, d, s) { - var o = ''; - - each(v, function(v, k) { - o += (!o ? '' : '&') + escape(k) + '=' + escape(v); - }); - - this.set(n, o, e, p, d, s); - }, - - get : function(n) { - var c = document.cookie, e, p = n + "=", b; - - // Strict mode - if (!c) - return; - - b = c.indexOf("; " + p); - - if (b == -1) { - b = c.indexOf(p); - - if (b != 0) - return null; - } else - b += 2; - - e = c.indexOf(";", b); - - if (e == -1) - e = c.length; - - return unescape(c.substring(b + p.length, e)); - }, - - set : function(n, v, e, p, d, s) { - document.cookie = n + "=" + escape(v) + - ((e) ? "; expires=" + e.toGMTString() : "") + - ((p) ? "; path=" + escape(p) : "") + - ((d) ? "; domain=" + d : "") + - ((s) ? "; secure" : ""); - }, - - remove : function(n, p) { - var d = new Date(); - - d.setTime(d.getTime() - 1000); - - this.set(n, '', d, p, d); - } - }); -})(); - -tinymce.create('static tinymce.util.JSON', { - serialize : function(o) { - var i, v, s = tinymce.util.JSON.serialize, t; - - if (o == null) - return 'null'; - - t = typeof o; - - if (t == 'string') { - v = '\bb\tt\nn\ff\rr\""\'\'\\\\'; - - return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, function(a, b) { - i = v.indexOf(b); - - if (i + 1) - return '\\' + v.charAt(i + 1); - - a = b.charCodeAt().toString(16); - - return '\\u' + '0000'.substring(a.length) + a; - }) + '"'; - } - - if (t == 'object') { - if (o.hasOwnProperty && o instanceof Array) { - for (i=0, v = '['; i 0 ? ',' : '') + s(o[i]); - - return v + ']'; - } - - v = '{'; - - for (i in o) - v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : ''; - - return v + '}'; - } - - return '' + o; - }, - - parse : function(s) { - try { - return eval('(' + s + ')'); - } catch (ex) { - // Ignore - } - } - - }); - -tinymce.create('static tinymce.util.XHR', { - send : function(o) { - var x, t, w = window, c = 0; - - // Default settings - o.scope = o.scope || this; - o.success_scope = o.success_scope || o.scope; - o.error_scope = o.error_scope || o.scope; - o.async = o.async === false ? false : true; - o.data = o.data || ''; - - function get(s) { - x = 0; - - try { - x = new ActiveXObject(s); - } catch (ex) { - } - - return x; - }; - - x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP'); - - if (x) { - if (x.overrideMimeType) - x.overrideMimeType(o.content_type); - - x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async); - - if (o.content_type) - x.setRequestHeader('Content-Type', o.content_type); - - x.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - - x.send(o.data); - - function ready() { - if (!o.async || x.readyState == 4 || c++ > 10000) { - if (o.success && c < 10000 && x.status == 200) - o.success.call(o.success_scope, '' + x.responseText, x, o); - else if (o.error) - o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o); - - x = null; - } else - w.setTimeout(ready, 10); - }; - - // Syncronous request - if (!o.async) - return ready(); - - // Wait for response, onReadyStateChange can not be used since it leaks memory in IE - t = w.setTimeout(ready, 10); - } - } -}); - -(function() { - var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR; - - tinymce.create('tinymce.util.JSONRequest', { - JSONRequest : function(s) { - this.settings = extend({ - }, s); - this.count = 0; - }, - - send : function(o) { - var ecb = o.error, scb = o.success; - - o = extend(this.settings, o); - - o.success = function(c, x) { - c = JSON.parse(c); - - if (typeof(c) == 'undefined') { - c = { - error : 'JSON Parse error.' - }; - } - - if (c.error) - ecb.call(o.error_scope || o.scope, c.error, x); - else - scb.call(o.success_scope || o.scope, c.result); - }; - - o.error = function(ty, x) { - ecb.call(o.error_scope || o.scope, ty, x); - }; - - o.data = JSON.serialize({ - id : o.id || 'c' + (this.count++), - method : o.method, - params : o.params - }); - - // JSON content type for Ruby on rails. Bug: #1883287 - o.content_type = 'application/json'; - - XHR.send(o); - }, - - 'static' : { - sendRPC : function(o) { - return new tinymce.util.JSONRequest().send(o); - } - } - }); -}()); -(function(tinymce) { - // Shorten names - var each = tinymce.each, - is = tinymce.is, - isWebKit = tinymce.isWebKit, - isIE = tinymce.isIE, - blockRe = /^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/, - boolAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), - mceAttribs = makeMap('src,href,style,coords,shape'), - encodedChars = {'&' : '&', '"' : '"', '<' : '<', '>' : '>'}, - encodeCharsRe = /[<>&\"]/g, - simpleSelectorRe = /^([a-z0-9],?)+$/i, - tagRegExp = /<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g, - attrRegExp = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; - - function makeMap(str) { - var map = {}, i; - - str = str.split(','); - for (i = str.length; i >= 0; i--) - map[str[i]] = 1; - - return map; - }; - - tinymce.create('tinymce.dom.DOMUtils', { - doc : null, - root : null, - files : null, - pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/, - props : { - "for" : "htmlFor", - "class" : "className", - className : "className", - checked : "checked", - disabled : "disabled", - maxlength : "maxLength", - readonly : "readOnly", - selected : "selected", - value : "value", - id : "id", - name : "name", - type : "type" - }, - - DOMUtils : function(d, s) { - var t = this, globalStyle; - - t.doc = d; - t.win = window; - t.files = {}; - t.cssFlicker = false; - t.counter = 0; - t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat"; - t.stdMode = d.documentMode === 8; - - t.settings = s = tinymce.extend({ - keep_values : false, - hex_colors : 1, - process_html : 1 - }, s); - - // Fix IE6SP2 flicker and check it failed for pre SP2 - if (tinymce.isIE6) { - try { - d.execCommand('BackgroundImageCache', false, true); - } catch (e) { - t.cssFlicker = true; - } - } - - // Build styles list - if (s.valid_styles) { - t._styles = {}; - - // Convert styles into a rule list - each(s.valid_styles, function(value, key) { - t._styles[key] = tinymce.explode(value); - }); - } - - tinymce.addUnload(t.destroy, t); - }, - - getRoot : function() { - var t = this, s = t.settings; - - return (s && t.get(s.root_element)) || t.doc.body; - }, - - getViewPort : function(w) { - var d, b; - - w = !w ? this.win : w; - d = w.document; - b = this.boxModel ? d.documentElement : d.body; - - // Returns viewport size excluding scrollbars - return { - x : w.pageXOffset || b.scrollLeft, - y : w.pageYOffset || b.scrollTop, - w : w.innerWidth || b.clientWidth, - h : w.innerHeight || b.clientHeight - }; - }, - - getRect : function(e) { - var p, t = this, sr; - - e = t.get(e); - p = t.getPos(e); - sr = t.getSize(e); - - return { - x : p.x, - y : p.y, - w : sr.w, - h : sr.h - }; - }, - - getSize : function(e) { - var t = this, w, h; - - e = t.get(e); - w = t.getStyle(e, 'width'); - h = t.getStyle(e, 'height'); - - // Non pixel value, then force offset/clientWidth - if (w.indexOf('px') === -1) - w = 0; - - // Non pixel value, then force offset/clientWidth - if (h.indexOf('px') === -1) - h = 0; - - return { - w : parseInt(w) || e.offsetWidth || e.clientWidth, - h : parseInt(h) || e.offsetHeight || e.clientHeight - }; - }, - - getParent : function(n, f, r) { - return this.getParents(n, f, r, false); - }, - - getParents : function(n, f, r, c) { - var t = this, na, se = t.settings, o = []; - - n = t.get(n); - c = c === undefined; - - if (se.strict_root) - r = r || t.getRoot(); - - // Wrap node name as func - if (is(f, 'string')) { - na = f; - - if (f === '*') { - f = function(n) {return n.nodeType == 1;}; - } else { - f = function(n) { - return t.is(n, na); - }; - } - } - - while (n) { - if (n == r || !n.nodeType || n.nodeType === 9) - break; - - if (!f || f(n)) { - if (c) - o.push(n); - else - return n; - } - - n = n.parentNode; - } - - return c ? o : null; - }, - - get : function(e) { - var n; - - if (e && this.doc && typeof(e) == 'string') { - n = e; - e = this.doc.getElementById(e); - - // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick - if (e && e.id !== n) - return this.doc.getElementsByName(n)[1]; - } - - return e; - }, - - getNext : function(node, selector) { - return this._findSib(node, selector, 'nextSibling'); - }, - - getPrev : function(node, selector) { - return this._findSib(node, selector, 'previousSibling'); - }, - - - select : function(pa, s) { - var t = this; - - return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []); - }, - - is : function(n, selector) { - var i; - - // If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance - if (n.length === undefined) { - // Simple all selector - if (selector === '*') - return n.nodeType == 1; - - // Simple selector just elements - if (simpleSelectorRe.test(selector)) { - selector = selector.toLowerCase().split(/,/); - n = n.nodeName.toLowerCase(); - - for (i = selector.length - 1; i >= 0; i--) { - if (selector[i] == n) - return true; - } - - return false; - } - } - - return tinymce.dom.Sizzle.matches(selector, n.nodeType ? [n] : n).length > 0; - }, - - - add : function(p, n, a, h, c) { - var t = this; - - return this.run(p, function(p) { - var e, k; - - e = is(n, 'string') ? t.doc.createElement(n) : n; - t.setAttribs(e, a); - - if (h) { - if (h.nodeType) - e.appendChild(h); - else - t.setHTML(e, h); - } - - return !c ? p.appendChild(e) : e; - }); - }, - - create : function(n, a, h) { - return this.add(this.doc.createElement(n), n, a, h, 1); - }, - - createHTML : function(n, a, h) { - var o = '', t = this, k; - - o += '<' + n; - - for (k in a) { - if (a.hasOwnProperty(k)) - o += ' ' + k + '="' + t.encode(a[k]) + '"'; - } - - if (tinymce.is(h)) - return o + '>' + h + ''; - - return o + ' />'; - }, - - remove : function(node, keep_children) { - return this.run(node, function(node) { - var parent, child; - - parent = node.parentNode; - - if (!parent) - return null; - - if (keep_children) { - while (child = node.firstChild) { - // IE 8 will crash if you don't remove completely empty text nodes - if (!tinymce.isIE || child.nodeType !== 3 || child.nodeValue) - parent.insertBefore(child, node); - else - node.removeChild(child); - } - } - - return parent.removeChild(node); - }); - }, - - setStyle : function(n, na, v) { - var t = this; - - return t.run(n, function(e) { - var s, i; - - s = e.style; - - // Camelcase it, if needed - na = na.replace(/-(\D)/g, function(a, b){ - return b.toUpperCase(); - }); - - // Default px suffix on these - if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v))) - v += 'px'; - - switch (na) { - case 'opacity': - // IE specific opacity - if (isIE) { - s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")"; - - if (!n.currentStyle || !n.currentStyle.hasLayout) - s.display = 'inline-block'; - } - - // Fix for older browsers - s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || ''; - break; - - case 'float': - isIE ? s.styleFloat = v : s.cssFloat = v; - break; - - default: - s[na] = v || ''; - } - - // Force update of the style data - if (t.settings.update_styles) - t.setAttrib(e, '_mce_style'); - }); - }, - - getStyle : function(n, na, c) { - n = this.get(n); - - if (!n) - return false; - - // Gecko - if (this.doc.defaultView && c) { - // Remove camelcase - na = na.replace(/[A-Z]/g, function(a){ - return '-' + a; - }); - - try { - return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na); - } catch (ex) { - // Old safari might fail - return null; - } - } - - // Camelcase it, if needed - na = na.replace(/-(\D)/g, function(a, b){ - return b.toUpperCase(); - }); - - if (na == 'float') - na = isIE ? 'styleFloat' : 'cssFloat'; - - // IE & Opera - if (n.currentStyle && c) - return n.currentStyle[na]; - - return n.style[na]; - }, - - setStyles : function(e, o) { - var t = this, s = t.settings, ol; - - ol = s.update_styles; - s.update_styles = 0; - - each(o, function(v, n) { - t.setStyle(e, n, v); - }); - - // Update style info - s.update_styles = ol; - if (s.update_styles) - t.setAttrib(e, s.cssText); - }, - - setAttrib : function(e, n, v) { - var t = this; - - // Whats the point - if (!e || !n) - return; - - // Strict XML mode - if (t.settings.strict) - n = n.toLowerCase(); - - return this.run(e, function(e) { - var s = t.settings; - - switch (n) { - case "style": - if (!is(v, 'string')) { - each(v, function(v, n) { - t.setStyle(e, n, v); - }); - - return; - } - - // No mce_style for elements with these since they might get resized by the user - if (s.keep_values) { - if (v && !t._isRes(v)) - e.setAttribute('_mce_style', v, 2); - else - e.removeAttribute('_mce_style', 2); - } - - e.style.cssText = v; - break; - - case "class": - e.className = v || ''; // Fix IE null bug - break; - - case "src": - case "href": - if (s.keep_values) { - if (s.url_converter) - v = s.url_converter.call(s.url_converter_scope || t, v, n, e); - - t.setAttrib(e, '_mce_' + n, v, 2); - } - - break; - - case "shape": - e.setAttribute('_mce_style', v); - break; - } - - if (is(v) && v !== null && v.length !== 0) - e.setAttribute(n, '' + v, 2); - else - e.removeAttribute(n, 2); - }); - }, - - setAttribs : function(e, o) { - var t = this; - - return this.run(e, function(e) { - each(o, function(v, n) { - t.setAttrib(e, n, v); - }); - }); - }, - - getAttrib : function(e, n, dv) { - var v, t = this; - - e = t.get(e); - - if (!e || e.nodeType !== 1) - return false; - - if (!is(dv)) - dv = ''; - - // Try the mce variant for these - if (/^(src|href|style|coords|shape)$/.test(n)) { - v = e.getAttribute("_mce_" + n); - - if (v) - return v; - } - - if (isIE && t.props[n]) { - v = e[t.props[n]]; - v = v && v.nodeValue ? v.nodeValue : v; - } - - if (!v) - v = e.getAttribute(n, 2); - - // Check boolean attribs - if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(n)) { - if (e[t.props[n]] === true && v === '') - return n; - - return v ? n : ''; - } - - // Inner input elements will override attributes on form elements - if (e.nodeName === "FORM" && e.getAttributeNode(n)) - return e.getAttributeNode(n).nodeValue; - - if (n === 'style') { - v = v || e.style.cssText; - - if (v) { - v = t.serializeStyle(t.parseStyle(v), e.nodeName); - - if (t.settings.keep_values && !t._isRes(v)) - e.setAttribute('_mce_style', v); - } - } - - // Remove Apple and WebKit stuff - if (isWebKit && n === "class" && v) - v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, ''); - - // Handle IE issues - if (isIE) { - switch (n) { - case 'rowspan': - case 'colspan': - // IE returns 1 as default value - if (v === 1) - v = ''; - - break; - - case 'size': - // IE returns +0 as default value for size - if (v === '+0' || v === 20 || v === 0) - v = ''; - - break; - - case 'width': - case 'height': - case 'vspace': - case 'checked': - case 'disabled': - case 'readonly': - if (v === 0) - v = ''; - - break; - - case 'hspace': - // IE returns -1 as default value - if (v === -1) - v = ''; - - break; - - case 'maxlength': - case 'tabindex': - // IE returns default value - if (v === 32768 || v === 2147483647 || v === '32768') - v = ''; - - break; - - case 'multiple': - case 'compact': - case 'noshade': - case 'nowrap': - if (v === 65535) - return n; - - return dv; - - case 'shape': - v = v.toLowerCase(); - break; - - default: - // IE has odd anonymous function for event attributes - if (n.indexOf('on') === 0 && v) - v = ('' + v).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1'); - } - } - - return (v !== undefined && v !== null && v !== '') ? '' + v : dv; - }, - - getPos : function(n, ro) { - var t = this, x = 0, y = 0, e, d = t.doc, r; - - n = t.get(n); - ro = ro || d.body; - - if (n) { - // Use getBoundingClientRect on IE, Opera has it but it's not perfect - if (isIE && !t.stdMode) { - n = n.getBoundingClientRect(); - e = t.boxModel ? d.documentElement : d.body; - x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border - x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x; - n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset - - return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x}; - } - - r = n; - while (r && r != ro && r.nodeType) { - x += r.offsetLeft || 0; - y += r.offsetTop || 0; - r = r.offsetParent; - } - - r = n.parentNode; - while (r && r != ro && r.nodeType) { - x -= r.scrollLeft || 0; - y -= r.scrollTop || 0; - r = r.parentNode; - } - } - - return {x : x, y : y}; - }, - - parseStyle : function(st) { - var t = this, s = t.settings, o = {}; - - if (!st) - return o; - - function compress(p, s, ot) { - var t, r, b, l; - - // Get values and check it it needs compressing - t = o[p + '-top' + s]; - if (!t) - return; - - r = o[p + '-right' + s]; - if (t != r) - return; - - b = o[p + '-bottom' + s]; - if (r != b) - return; - - l = o[p + '-left' + s]; - if (b != l) - return; - - // Compress - o[ot] = l; - delete o[p + '-top' + s]; - delete o[p + '-right' + s]; - delete o[p + '-bottom' + s]; - delete o[p + '-left' + s]; - }; - - function compress2(ta, a, b, c) { - var t; - - t = o[a]; - if (!t) - return; - - t = o[b]; - if (!t) - return; - - t = o[c]; - if (!t) - return; - - // Compress - o[ta] = o[a] + ' ' + o[b] + ' ' + o[c]; - delete o[a]; - delete o[b]; - delete o[c]; - }; - - st = st.replace(/&(#?[a-z0-9]+);/g, '&$1_MCE_SEMI_'); // Protect entities - - each(st.split(';'), function(v) { - var sv, ur = []; - - if (v) { - v = v.replace(/_MCE_SEMI_/g, ';'); // Restore entities - v = v.replace(/url\([^\)]+\)/g, function(v) {ur.push(v);return 'url(' + ur.length + ')';}); - v = v.split(':'); - sv = tinymce.trim(v[1]); - sv = sv.replace(/url\(([^\)]+)\)/g, function(a, b) {return ur[parseInt(b) - 1];}); - - sv = sv.replace(/rgb\([^\)]+\)/g, function(v) { - return t.toHex(v); - }); - - if (s.url_converter) { - sv = sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, function(x, c) { - return 'url(' + s.url_converter.call(s.url_converter_scope || t, t.decode(c), 'style', null) + ')'; - }); - } - - o[tinymce.trim(v[0]).toLowerCase()] = sv; - } - }); - - compress("border", "", "border"); - compress("border", "-width", "border-width"); - compress("border", "-color", "border-color"); - compress("border", "-style", "border-style"); - compress("padding", "", "padding"); - compress("margin", "", "margin"); - compress2('border', 'border-width', 'border-style', 'border-color'); - - if (isIE) { - // Remove pointless border - if (o.border == 'medium none') - o.border = ''; - } - - return o; - }, - - serializeStyle : function(o, name) { - var t = this, s = ''; - - function add(v, k) { - if (k && v) { - // Remove browser specific styles like -moz- or -webkit- - if (k.indexOf('-') === 0) - return; - - switch (k) { - case 'font-weight': - // Opera will output bold as 700 - if (v == 700) - v = 'bold'; - - break; - - case 'color': - case 'background-color': - v = v.toLowerCase(); - break; - } - - s += (s ? ' ' : '') + k + ': ' + v + ';'; - } - }; - - // Validate style output - if (name && t._styles) { - each(t._styles['*'], function(name) { - add(o[name], name); - }); - - each(t._styles[name.toLowerCase()], function(name) { - add(o[name], name); - }); - } else - each(o, add); - - return s; - }, - - loadCSS : function(u) { - var t = this, d = t.doc, head; - - if (!u) - u = ''; - - head = t.select('head')[0]; - - each(u.split(','), function(u) { - var link; - - if (t.files[u]) - return; - - t.files[u] = true; - link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)}); - - // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug - // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading - // It's ugly but it seems to work fine. - if (isIE && d.documentMode) { - link.onload = function() { - d.recalc(); - link.onload = null; - }; - } - - head.appendChild(link); - }); - }, - - addClass : function(e, c) { - return this.run(e, function(e) { - var o; - - if (!c) - return 0; - - if (this.hasClass(e, c)) - return e.className; - - o = this.removeClass(e, c); - - return e.className = (o != '' ? (o + ' ') : '') + c; - }); - }, - - removeClass : function(e, c) { - var t = this, re; - - return t.run(e, function(e) { - var v; - - if (t.hasClass(e, c)) { - if (!re) - re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g"); - - v = e.className.replace(re, ' '); - v = tinymce.trim(v != ' ' ? v : ''); - - e.className = v; - - // Empty class attr - if (!v) { - e.removeAttribute('class'); - e.removeAttribute('className'); - } - - return v; - } - - return e.className; - }); - }, - - hasClass : function(n, c) { - n = this.get(n); - - if (!n || !c) - return false; - - return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1; - }, - - show : function(e) { - return this.setStyle(e, 'display', 'block'); - }, - - hide : function(e) { - return this.setStyle(e, 'display', 'none'); - }, - - isHidden : function(e) { - e = this.get(e); - - return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none'; - }, - - uniqueId : function(p) { - return (!p ? 'mce_' : p) + (this.counter++); - }, - - setHTML : function(e, h) { - var t = this; - - return this.run(e, function(e) { - var x, i, nl, n, p, x; - - h = t.processHTML(h); - - if (isIE) { - function set() { - // Remove all child nodes - while (e.firstChild) - e.firstChild.removeNode(); - - try { - // IE will remove comments from the beginning - // unless you padd the contents with something - e.innerHTML = '
    ' + h; - e.removeChild(e.firstChild); - } catch (ex) { - // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p - // This seems to fix this problem - - // Create new div with HTML contents and a BR infront to keep comments - x = t.create('div'); - x.innerHTML = '
    ' + h; - - // Add all children from div to target - each (x.childNodes, function(n, i) { - // Skip br element - if (i) - e.appendChild(n); - }); - } - }; - - // IE has a serious bug when it comes to paragraphs it can produce an invalid - // DOM tree if contents like this

    • Item 1

    is inserted - // It seems to be that IE doesn't like a root block element placed inside another root block element - if (t.settings.fix_ie_paragraphs) - h = h.replace(/

    <\/p>|]+)><\/p>|/gi, ' 

    '); - - set(); - - if (t.settings.fix_ie_paragraphs) { - // Check for odd paragraphs this is a sign of a broken DOM - nl = e.getElementsByTagName("p"); - for (i = nl.length - 1, x = 0; i >= 0; i--) { - n = nl[i]; - - if (!n.hasChildNodes()) { - if (!n._mce_keep) { - x = 1; // Is broken - break; - } - - n.removeAttribute('_mce_keep'); - } - } - } - - // Time to fix the madness IE left us - if (x) { - // So if we replace the p elements with divs and mark them and then replace them back to paragraphs - // after we use innerHTML we can fix the DOM tree - h = h.replace(/

    ]+)>|

    /ig, '

    '); - h = h.replace(/<\/p>/gi, '
    '); - - // Set the new HTML with DIVs - set(); - - // Replace all DIV elements with the _mce_tmp attibute back to paragraphs - // This is needed since IE has a annoying bug see above for details - // This is a slow process but it has to be done. :( - if (t.settings.fix_ie_paragraphs) { - nl = e.getElementsByTagName("DIV"); - for (i = nl.length - 1; i >= 0; i--) { - n = nl[i]; - - // Is it a temp div - if (n._mce_tmp) { - // Create new paragraph - p = t.doc.createElement('p'); - - // Copy all attributes - n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, function(a, b) { - var v; - - if (b !== '_mce_tmp') { - v = n.getAttribute(b); - - if (!v && b === 'class') - v = n.className; - - p.setAttribute(b, v); - } - }); - - // Append all children to new paragraph - for (x = 0; x]+)\/>|/gi, ''); // Force open - - // Store away src and href in _mce_src and mce_href since browsers mess them up - if (s.keep_values) { - // Wrap scripts and styles in comments for serialization purposes - if (/)/g, '\n'); - s = s.replace(/^[\r\n]*|[\r\n]*$/g, ''); - s = s.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g, ''); - - return s; - }; - - // Wrap the script contents in CDATA and keep them from executing - h = h.replace(/]+|)>([\s\S]*?)<\/script>/gi, function(v, attribs, text) { - // Force type attribute - if (!attribs) - attribs = ' type="text/javascript"'; - - // Convert the src attribute of the scripts - attribs = attribs.replace(/src=\"([^\"]+)\"?/i, function(a, url) { - if (s.url_converter) - url = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(url), 'src', 'script')); - - return '_mce_src="' + url + '"'; - }); - - // Wrap text contents - if (tinymce.trim(text)) { - codeBlocks.push(trim(text)); - text = ''; - } - - return '' + text + ''; - }); - - // Wrap style elements - h = h.replace(/]+|)>([\s\S]*?)<\/style>/gi, function(v, attribs, text) { - // Wrap text contents - if (text) { - codeBlocks.push(trim(text)); - text = ''; - } - - return '' + text + ''; - }); - - // Wrap noscript elements - h = h.replace(/]+|)>([\s\S]*?)<\/noscript>/g, function(v, attribs, text) { - return ''; - }); - } - - h = h.replace(//g, ''); - - // This function processes the attributes in the HTML string to force boolean - // attributes to the attr="attr" format and convert style, src and href to _mce_ versions - function processTags(html) { - return html.replace(tagRegExp, function(match, elm_name, attrs, end) { - return '<' + elm_name + attrs.replace(attrRegExp, function(match, name, value, val2, val3) { - var mceValue; - - name = name.toLowerCase(); - value = value || val2 || val3 || ""; - - // Treat boolean attributes - if (boolAttrs[name]) { - // false or 0 is treated as a missing attribute - if (value === 'false' || value === '0') - return; - - return name + '="' + name + '"'; - } - - // Is attribute one that needs special treatment - if (mceAttribs[name] && attrs.indexOf('_mce_' + name) == -1) { - mceValue = t.decode(value); - - // Convert URLs to relative/absolute ones - if (s.url_converter && (name == "src" || name == "href")) - mceValue = s.url_converter.call(s.url_converter_scope || t, mceValue, name, elm_name); - - // Process styles lowercases them and compresses them - if (name == 'style') - mceValue = t.serializeStyle(t.parseStyle(mceValue), name); - - return name + '="' + value + '"' + ' _mce_' + name + '="' + t.encode(mceValue) + '"'; - } - - return match; - }) + end + '>'; - }); - }; - - h = processTags(h); - - // Restore script blocks - h = h.replace(/MCE_SCRIPT:([0-9]+)/g, function(val, idx) { - return codeBlocks[idx]; - }); - } - - return h; - }, - - getOuterHTML : function(e) { - var d; - - e = this.get(e); - - if (!e) - return null; - - if (e.outerHTML !== undefined) - return e.outerHTML; - - d = (e.ownerDocument || this.doc).createElement("body"); - d.appendChild(e.cloneNode(true)); - - return d.innerHTML; - }, - - setOuterHTML : function(e, h, d) { - var t = this; - - function setHTML(e, h, d) { - var n, tp; - - tp = d.createElement("body"); - tp.innerHTML = h; - - n = tp.lastChild; - while (n) { - t.insertAfter(n.cloneNode(true), e); - n = n.previousSibling; - } - - t.remove(e); - }; - - return this.run(e, function(e) { - e = t.get(e); - - // Only set HTML on elements - if (e.nodeType == 1) { - d = d || e.ownerDocument || t.doc; - - if (isIE) { - try { - // Try outerHTML for IE it sometimes produces an unknown runtime error - if (isIE && e.nodeType == 1) - e.outerHTML = h; - else - setHTML(e, h, d); - } catch (ex) { - // Fix for unknown runtime error - setHTML(e, h, d); - } - } else - setHTML(e, h, d); - } - }); - }, - - decode : function(s) { - var e, n, v; - - // Look for entities to decode - if (/&[\w#]+;/.test(s)) { - // Decode the entities using a div element not super efficient but less code - e = this.doc.createElement("div"); - e.innerHTML = s; - n = e.firstChild; - v = ''; - - if (n) { - do { - v += n.nodeValue; - } while (n = n.nextSibling); - } - - return v || s; - } - - return s; - }, - - encode : function(str) { - return ('' + str).replace(encodeCharsRe, function(chr) { - return encodedChars[chr]; - }); - }, - - insertAfter : function(node, reference_node) { - reference_node = this.get(reference_node); - - return this.run(node, function(node) { - var parent, nextSibling; - - parent = reference_node.parentNode; - nextSibling = reference_node.nextSibling; - - if (nextSibling) - parent.insertBefore(node, nextSibling); - else - parent.appendChild(node); - - return node; - }); - }, - - isBlock : function(n) { - if (n.nodeType && n.nodeType !== 1) - return false; - - n = n.nodeName || n; - - return blockRe.test(n); - }, - - replace : function(n, o, k) { - var t = this; - - if (is(o, 'array')) - n = n.cloneNode(true); - - return t.run(o, function(o) { - if (k) { - each(tinymce.grep(o.childNodes), function(c) { - n.appendChild(c); - }); - } - - return o.parentNode.replaceChild(n, o); - }); - }, - - rename : function(elm, name) { - var t = this, newElm; - - if (elm.nodeName != name.toUpperCase()) { - // Rename block element - newElm = t.create(name); - - // Copy attribs to new block - each(t.getAttribs(elm), function(attr_node) { - t.setAttrib(newElm, attr_node.nodeName, t.getAttrib(elm, attr_node.nodeName)); - }); - - // Replace block - t.replace(newElm, elm, 1); - } - - return newElm || elm; - }, - - findCommonAncestor : function(a, b) { - var ps = a, pe; - - while (ps) { - pe = b; - - while (pe && ps != pe) - pe = pe.parentNode; - - if (ps == pe) - break; - - ps = ps.parentNode; - } - - if (!ps && a.ownerDocument) - return a.ownerDocument.documentElement; - - return ps; - }, - - toHex : function(s) { - var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s); - - function hex(s) { - s = parseInt(s).toString(16); - - return s.length > 1 ? s : '0' + s; // 0 -> 00 - }; - - if (c) { - s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]); - - return s; - } - - return s; - }, - - getClasses : function() { - var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov; - - if (t.classes) - return t.classes; - - function addClasses(s) { - // IE style imports - each(s.imports, function(r) { - addClasses(r); - }); - - each(s.cssRules || s.rules, function(r) { - // Real type or fake it on IE - switch (r.type || 1) { - // Rule - case 1: - if (r.selectorText) { - each(r.selectorText.split(','), function(v) { - v = v.replace(/^\s*|\s*$|^\s\./g, ""); - - // Is internal or it doesn't contain a class - if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v)) - return; - - // Remove everything but class name - ov = v; - v = v.replace(/.*\.([a-z0-9_\-]+).*/i, '$1'); - - // Filter classes - if (f && !(v = f(v, ov))) - return; - - if (!lo[v]) { - cl.push({'class' : v}); - lo[v] = 1; - } - }); - } - break; - - // Import - case 3: - addClasses(r.styleSheet); - break; - } - }); - }; - - try { - each(t.doc.styleSheets, addClasses); - } catch (ex) { - // Ignore - } - - if (cl.length > 0) - t.classes = cl; - - return cl; - }, - - run : function(e, f, s) { - var t = this, o; - - if (t.doc && typeof(e) === 'string') - e = t.get(e); - - if (!e) - return false; - - s = s || this; - if (!e.nodeType && (e.length || e.length === 0)) { - o = []; - - each(e, function(e, i) { - if (e) { - if (typeof(e) == 'string') - e = t.doc.getElementById(e); - - o.push(f.call(s, e, i)); - } - }); - - return o; - } - - return f.call(s, e); - }, - - getAttribs : function(n) { - var o; - - n = this.get(n); - - if (!n) - return []; - - if (isIE) { - o = []; - - // Object will throw exception in IE - if (n.nodeName == 'OBJECT') - return n.attributes; - - // IE doesn't keep the selected attribute if you clone option elements - if (n.nodeName === 'OPTION' && this.getAttrib(n, 'selected')) - o.push({specified : 1, nodeName : 'selected'}); - - // It's crazy that this is faster in IE but it's because it returns all attributes all the time - n.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, '').replace(/[\w:\-]+/gi, function(a) { - o.push({specified : 1, nodeName : a}); - }); - - return o; - } - - return n.attributes; - }, - - destroy : function(s) { - var t = this; - - if (t.events) - t.events.destroy(); - - t.win = t.doc = t.root = t.events = null; - - // Manual destroy then remove unload handler - if (!s) - tinymce.removeUnload(t.destroy); - }, - - createRng : function() { - var d = this.doc; - - return d.createRange ? d.createRange() : new tinymce.dom.Range(this); - }, - - nodeIndex : function(node, normalized) { - var idx = 0, lastNodeType, lastNode, nodeType; - - if (node) { - for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) { - nodeType = node.nodeType; - - // Normalize text nodes - if (normalized && nodeType == 3) { - if (nodeType == lastNodeType || !node.nodeValue.length) - continue; - } - - idx++; - lastNodeType = nodeType; - } - } - - return idx; - }, - - split : function(pe, e, re) { - var t = this, r = t.createRng(), bef, aft, pa; - - // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sense - // but we don't want that in our code since it serves no purpose for the end user - // For example if this is chopped: - //

    text 1CHOPtext 2

    - // would produce: - //

    text 1

    CHOP

    text 2

    - // this function will then trim of empty edges and produce: - //

    text 1

    CHOP

    text 2

    - function trim(node) { - var i, children = node.childNodes; - - if (node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark') - return; - - for (i = children.length - 1; i >= 0; i--) - trim(children[i]); - - if (node.nodeType != 9) { - // Keep non whitespace text nodes - if (node.nodeType == 3 && node.nodeValue.length > 0) - return; - - if (node.nodeType == 1) { - // If the only child is a bookmark then move it up - children = node.childNodes; - if (children.length == 1 && children[0] && children[0].nodeType == 1 && children[0].getAttribute('_mce_type') == 'bookmark') - node.parentNode.insertBefore(children[0], node); - - // Keep non empty elements or img, hr etc - if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName)) - return; - } - - t.remove(node); - } - - return node; - }; - - if (pe && e) { - // Get before chunk - r.setStart(pe.parentNode, t.nodeIndex(pe)); - r.setEnd(e.parentNode, t.nodeIndex(e)); - bef = r.extractContents(); - - // Get after chunk - r = t.createRng(); - r.setStart(e.parentNode, t.nodeIndex(e) + 1); - r.setEnd(pe.parentNode, t.nodeIndex(pe) + 1); - aft = r.extractContents(); - - // Insert before chunk - pa = pe.parentNode; - pa.insertBefore(trim(bef), pe); - - // Insert middle chunk - if (re) - pa.replaceChild(re, e); - else - pa.insertBefore(e, pe); - - // Insert after chunk - pa.insertBefore(trim(aft), pe); - t.remove(pe); - - return re || e; - } - }, - - bind : function(target, name, func, scope) { - var t = this; - - if (!t.events) - t.events = new tinymce.dom.EventUtils(); - - return t.events.add(target, name, func, scope || this); - }, - - unbind : function(target, name, func) { - var t = this; - - if (!t.events) - t.events = new tinymce.dom.EventUtils(); - - return t.events.remove(target, name, func); - }, - - - _findSib : function(node, selector, name) { - var t = this, f = selector; - - if (node) { - // If expression make a function of it using is - if (is(f, 'string')) { - f = function(node) { - return t.is(node, selector); - }; - } - - // Loop all siblings - for (node = node[name]; node; node = node[name]) { - if (f(node)) - return node; - } - } - - return null; - }, - - _isRes : function(c) { - // Is live resizble element - return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c); - } - - /* - walk : function(n, f, s) { - var d = this.doc, w; - - if (d.createTreeWalker) { - w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); - - while ((n = w.nextNode()) != null) - f.call(s || this, n); - } else - tinymce.walk(n, f, 'childNodes', s); - } - */ - - /* - toRGB : function(s) { - var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s); - - if (c) { - // #FFF -> #FFFFFF - if (!is(c[3])) - c[3] = c[2] = c[1]; - - return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")"; - } - - return s; - } - */ - }); - - tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0}); -})(tinymce); - -(function(ns) { - // Range constructor - function Range(dom) { - var t = this, - doc = dom.doc, - EXTRACT = 0, - CLONE = 1, - DELETE = 2, - TRUE = true, - FALSE = false, - START_OFFSET = 'startOffset', - START_CONTAINER = 'startContainer', - END_CONTAINER = 'endContainer', - END_OFFSET = 'endOffset', - extend = tinymce.extend, - nodeIndex = dom.nodeIndex; - - extend(t, { - // Inital states - startContainer : doc, - startOffset : 0, - endContainer : doc, - endOffset : 0, - collapsed : TRUE, - commonAncestorContainer : doc, - - // Range constants - START_TO_START : 0, - START_TO_END : 1, - END_TO_END : 2, - END_TO_START : 3, - - // Public methods - setStart : setStart, - setEnd : setEnd, - setStartBefore : setStartBefore, - setStartAfter : setStartAfter, - setEndBefore : setEndBefore, - setEndAfter : setEndAfter, - collapse : collapse, - selectNode : selectNode, - selectNodeContents : selectNodeContents, - compareBoundaryPoints : compareBoundaryPoints, - deleteContents : deleteContents, - extractContents : extractContents, - cloneContents : cloneContents, - insertNode : insertNode, - surroundContents : surroundContents, - cloneRange : cloneRange - }); - - function setStart(n, o) { - _setEndPoint(TRUE, n, o); - }; - - function setEnd(n, o) { - _setEndPoint(FALSE, n, o); - }; - - function setStartBefore(n) { - setStart(n.parentNode, nodeIndex(n)); - }; - - function setStartAfter(n) { - setStart(n.parentNode, nodeIndex(n) + 1); - }; - - function setEndBefore(n) { - setEnd(n.parentNode, nodeIndex(n)); - }; - - function setEndAfter(n) { - setEnd(n.parentNode, nodeIndex(n) + 1); - }; - - function collapse(ts) { - if (ts) { - t[END_CONTAINER] = t[START_CONTAINER]; - t[END_OFFSET] = t[START_OFFSET]; - } else { - t[START_CONTAINER] = t[END_CONTAINER]; - t[START_OFFSET] = t[END_OFFSET]; - } - - t.collapsed = TRUE; - }; - - function selectNode(n) { - setStartBefore(n); - setEndAfter(n); - }; - - function selectNodeContents(n) { - setStart(n, 0); - setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length); - }; - - function compareBoundaryPoints(h, r) { - var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET]; - - // Check START_TO_START - if (h === 0) - return _compareBoundaryPoints(sc, so, sc, so); - - // Check START_TO_END - if (h === 1) - return _compareBoundaryPoints(sc, so, ec, eo); - - // Check END_TO_END - if (h === 2) - return _compareBoundaryPoints(ec, eo, ec, eo); - - // Check END_TO_START - if (h === 3) - return _compareBoundaryPoints(ec, eo, sc, so); - }; - - function deleteContents() { - _traverse(DELETE); - }; - - function extractContents() { - return _traverse(EXTRACT); - }; - - function cloneContents() { - return _traverse(CLONE); - }; - - function insertNode(n) { - var startContainer = this[START_CONTAINER], - startOffset = this[START_OFFSET], nn, o; - - // Node is TEXT_NODE or CDATA - if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) { - if (!startOffset) { - // At the start of text - startContainer.parentNode.insertBefore(n, startContainer); - } else if (startOffset >= startContainer.nodeValue.length) { - // At the end of text - dom.insertAfter(n, startContainer); - } else { - // Middle, need to split - nn = startContainer.splitText(startOffset); - startContainer.parentNode.insertBefore(n, nn); - } - } else { - // Insert element node - if (startContainer.childNodes.length > 0) - o = startContainer.childNodes[startOffset]; - - if (o) - startContainer.insertBefore(n, o); - else - startContainer.appendChild(n); - } - }; - - function surroundContents(n) { - var f = t.extractContents(); - - t.insertNode(n); - n.appendChild(f); - t.selectNode(n); - }; - - function cloneRange() { - return extend(new Range(dom), { - startContainer : t[START_CONTAINER], - startOffset : t[START_OFFSET], - endContainer : t[END_CONTAINER], - endOffset : t[END_OFFSET], - collapsed : t.collapsed, - commonAncestorContainer : t.commonAncestorContainer - }); - }; - - // Private methods - - function _getSelectedNode(container, offset) { - var child; - - if (container.nodeType == 3 /* TEXT_NODE */) - return container; - - if (offset < 0) - return container; - - child = container.firstChild; - while (child && offset > 0) { - --offset; - child = child.nextSibling; - } - - if (child) - return child; - - return container; - }; - - function _isCollapsed() { - return (t[START_CONTAINER] == t[END_CONTAINER] && t[START_OFFSET] == t[END_OFFSET]); - }; - - function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) { - var c, offsetC, n, cmnRoot, childA, childB; - - // In the first case the boundary-points have the same container. A is before B - // if its offset is less than the offset of B, A is equal to B if its offset is - // equal to the offset of B, and A is after B if its offset is greater than the - // offset of B. - if (containerA == containerB) { - if (offsetA == offsetB) - return 0; // equal - - if (offsetA < offsetB) - return -1; // before - - return 1; // after - } - - // In the second case a child node C of the container of A is an ancestor - // container of B. In this case, A is before B if the offset of A is less than or - // equal to the index of the child node C and A is after B otherwise. - c = containerB; - while (c && c.parentNode != containerA) - c = c.parentNode; - - if (c) { - offsetC = 0; - n = containerA.firstChild; - - while (n != c && offsetC < offsetA) { - offsetC++; - n = n.nextSibling; - } - - if (offsetA <= offsetC) - return -1; // before - - return 1; // after - } - - // In the third case a child node C of the container of B is an ancestor container - // of A. In this case, A is before B if the index of the child node C is less than - // the offset of B and A is after B otherwise. - c = containerA; - while (c && c.parentNode != containerB) { - c = c.parentNode; - } - - if (c) { - offsetC = 0; - n = containerB.firstChild; - - while (n != c && offsetC < offsetB) { - offsetC++; - n = n.nextSibling; - } - - if (offsetC < offsetB) - return -1; // before - - return 1; // after - } - - // In the fourth case, none of three other cases hold: the containers of A and B - // are siblings or descendants of sibling nodes. In this case, A is before B if - // the container of A is before the container of B in a pre-order traversal of the - // Ranges' context tree and A is after B otherwise. - cmnRoot = dom.findCommonAncestor(containerA, containerB); - childA = containerA; - - while (childA && childA.parentNode != cmnRoot) - childA = childA.parentNode; - - if (!childA) - childA = cmnRoot; - - childB = containerB; - while (childB && childB.parentNode != cmnRoot) - childB = childB.parentNode; - - if (!childB) - childB = cmnRoot; - - if (childA == childB) - return 0; // equal - - n = cmnRoot.firstChild; - while (n) { - if (n == childA) - return -1; // before - - if (n == childB) - return 1; // after - - n = n.nextSibling; - } - }; - - function _setEndPoint(st, n, o) { - var ec, sc; - - if (st) { - t[START_CONTAINER] = n; - t[START_OFFSET] = o; - } else { - t[END_CONTAINER] = n; - t[END_OFFSET] = o; - } - - // If one boundary-point of a Range is set to have a root container - // other than the current one for the Range, the Range is collapsed to - // the new position. This enforces the restriction that both boundary- - // points of a Range must have the same root container. - ec = t[END_CONTAINER]; - while (ec.parentNode) - ec = ec.parentNode; - - sc = t[START_CONTAINER]; - while (sc.parentNode) - sc = sc.parentNode; - - if (sc == ec) { - // The start position of a Range is guaranteed to never be after the - // end position. To enforce this restriction, if the start is set to - // be at a position after the end, the Range is collapsed to that - // position. - if (_compareBoundaryPoints(t[START_CONTAINER], t[START_OFFSET], t[END_CONTAINER], t[END_OFFSET]) > 0) - t.collapse(st); - } else - t.collapse(st); - - t.collapsed = _isCollapsed(); - t.commonAncestorContainer = dom.findCommonAncestor(t[START_CONTAINER], t[END_CONTAINER]); - }; - - function _traverse(how) { - var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep; - - if (t[START_CONTAINER] == t[END_CONTAINER]) - return _traverseSameContainer(how); - - for (c = t[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) { - if (p == t[START_CONTAINER]) - return _traverseCommonStartContainer(c, how); - - ++endContainerDepth; - } - - for (c = t[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) { - if (p == t[END_CONTAINER]) - return _traverseCommonEndContainer(c, how); - - ++startContainerDepth; - } - - depthDiff = startContainerDepth - endContainerDepth; - - startNode = t[START_CONTAINER]; - while (depthDiff > 0) { - startNode = startNode.parentNode; - depthDiff--; - } - - endNode = t[END_CONTAINER]; - while (depthDiff < 0) { - endNode = endNode.parentNode; - depthDiff++; - } - - // ascend the ancestor hierarchy until we have a common parent. - for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) { - startNode = sp; - endNode = ep; - } - - return _traverseCommonAncestors(startNode, endNode, how); - }; - - function _traverseSameContainer(how) { - var frag, s, sub, n, cnt, sibling, xferNode; - - if (how != DELETE) - frag = doc.createDocumentFragment(); - - // If selection is empty, just return the fragment - if (t[START_OFFSET] == t[END_OFFSET]) - return frag; - - // Text node needs special case handling - if (t[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) { - // get the substring - s = t[START_CONTAINER].nodeValue; - sub = s.substring(t[START_OFFSET], t[END_OFFSET]); - - // set the original text node to its new value - if (how != CLONE) { - t[START_CONTAINER].deleteData(t[START_OFFSET], t[END_OFFSET] - t[START_OFFSET]); - - // Nothing is partially selected, so collapse to start point - t.collapse(TRUE); - } - - if (how == DELETE) - return; - - frag.appendChild(doc.createTextNode(sub)); - return frag; - } - - // Copy nodes between the start/end offsets. - n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]); - cnt = t[END_OFFSET] - t[START_OFFSET]; - - while (cnt > 0) { - sibling = n.nextSibling; - xferNode = _traverseFullySelected(n, how); - - if (frag) - frag.appendChild( xferNode ); - - --cnt; - n = sibling; - } - - // Nothing is partially selected, so collapse to start point - if (how != CLONE) - t.collapse(TRUE); - - return frag; - }; - - function _traverseCommonStartContainer(endAncestor, how) { - var frag, n, endIdx, cnt, sibling, xferNode; - - if (how != DELETE) - frag = doc.createDocumentFragment(); - - n = _traverseRightBoundary(endAncestor, how); - - if (frag) - frag.appendChild(n); - - endIdx = nodeIndex(endAncestor); - cnt = endIdx - t[START_OFFSET]; - - if (cnt <= 0) { - // Collapse to just before the endAncestor, which - // is partially selected. - if (how != CLONE) { - t.setEndBefore(endAncestor); - t.collapse(FALSE); - } - - return frag; - } - - n = endAncestor.previousSibling; - while (cnt > 0) { - sibling = n.previousSibling; - xferNode = _traverseFullySelected(n, how); - - if (frag) - frag.insertBefore(xferNode, frag.firstChild); - - --cnt; - n = sibling; - } - - // Collapse to just before the endAncestor, which - // is partially selected. - if (how != CLONE) { - t.setEndBefore(endAncestor); - t.collapse(FALSE); - } - - return frag; - }; - - function _traverseCommonEndContainer(startAncestor, how) { - var frag, startIdx, n, cnt, sibling, xferNode; - - if (how != DELETE) - frag = doc.createDocumentFragment(); - - n = _traverseLeftBoundary(startAncestor, how); - if (frag) - frag.appendChild(n); - - startIdx = nodeIndex(startAncestor); - ++startIdx; // Because we already traversed it.... - - cnt = t[END_OFFSET] - startIdx; - n = startAncestor.nextSibling; - while (cnt > 0) { - sibling = n.nextSibling; - xferNode = _traverseFullySelected(n, how); - - if (frag) - frag.appendChild(xferNode); - - --cnt; - n = sibling; - } - - if (how != CLONE) { - t.setStartAfter(startAncestor); - t.collapse(TRUE); - } - - return frag; - }; - - function _traverseCommonAncestors(startAncestor, endAncestor, how) { - var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling; - - if (how != DELETE) - frag = doc.createDocumentFragment(); - - n = _traverseLeftBoundary(startAncestor, how); - if (frag) - frag.appendChild(n); - - commonParent = startAncestor.parentNode; - startOffset = nodeIndex(startAncestor); - endOffset = nodeIndex(endAncestor); - ++startOffset; - - cnt = endOffset - startOffset; - sibling = startAncestor.nextSibling; - - while (cnt > 0) { - nextSibling = sibling.nextSibling; - n = _traverseFullySelected(sibling, how); - - if (frag) - frag.appendChild(n); - - sibling = nextSibling; - --cnt; - } - - n = _traverseRightBoundary(endAncestor, how); - - if (frag) - frag.appendChild(n); - - if (how != CLONE) { - t.setStartAfter(startAncestor); - t.collapse(TRUE); - } - - return frag; - }; - - function _traverseRightBoundary(root, how) { - var next = _getSelectedNode(t[END_CONTAINER], t[END_OFFSET] - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != t[END_CONTAINER]; - - if (next == root) - return _traverseNode(next, isFullySelected, FALSE, how); - - parent = next.parentNode; - clonedParent = _traverseNode(parent, FALSE, FALSE, how); - - while (parent) { - while (next) { - prevSibling = next.previousSibling; - clonedChild = _traverseNode(next, isFullySelected, FALSE, how); - - if (how != DELETE) - clonedParent.insertBefore(clonedChild, clonedParent.firstChild); - - isFullySelected = TRUE; - next = prevSibling; - } - - if (parent == root) - return clonedParent; - - next = parent.previousSibling; - parent = parent.parentNode; - - clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how); - - if (how != DELETE) - clonedGrandParent.appendChild(clonedParent); - - clonedParent = clonedGrandParent; - } - }; - - function _traverseLeftBoundary(root, how) { - var next = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]), isFullySelected = next != t[START_CONTAINER], parent, clonedParent, nextSibling, clonedChild, clonedGrandParent; - - if (next == root) - return _traverseNode(next, isFullySelected, TRUE, how); - - parent = next.parentNode; - clonedParent = _traverseNode(parent, FALSE, TRUE, how); - - while (parent) { - while (next) { - nextSibling = next.nextSibling; - clonedChild = _traverseNode(next, isFullySelected, TRUE, how); - - if (how != DELETE) - clonedParent.appendChild(clonedChild); - - isFullySelected = TRUE; - next = nextSibling; - } - - if (parent == root) - return clonedParent; - - next = parent.nextSibling; - parent = parent.parentNode; - - clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how); - - if (how != DELETE) - clonedGrandParent.appendChild(clonedParent); - - clonedParent = clonedGrandParent; - } - }; - - function _traverseNode(n, isFullySelected, isLeft, how) { - var txtValue, newNodeValue, oldNodeValue, offset, newNode; - - if (isFullySelected) - return _traverseFullySelected(n, how); - - if (n.nodeType == 3 /* TEXT_NODE */) { - txtValue = n.nodeValue; - - if (isLeft) { - offset = t[START_OFFSET]; - newNodeValue = txtValue.substring(offset); - oldNodeValue = txtValue.substring(0, offset); - } else { - offset = t[END_OFFSET]; - newNodeValue = txtValue.substring(0, offset); - oldNodeValue = txtValue.substring(offset); - } - - if (how != CLONE) - n.nodeValue = oldNodeValue; - - if (how == DELETE) - return; - - newNode = n.cloneNode(FALSE); - newNode.nodeValue = newNodeValue; - - return newNode; - } - - if (how == DELETE) - return; - - return n.cloneNode(FALSE); - }; - - function _traverseFullySelected(n, how) { - if (how != DELETE) - return how == CLONE ? n.cloneNode(TRUE) : n; - - n.parentNode.removeChild(n); - }; - }; - - ns.Range = Range; -})(tinymce.dom); - -(function() { - function Selection(selection) { - var t = this, invisibleChar = '\uFEFF', range, lastIERng, dom = selection.dom, TRUE = true, FALSE = false; - - // Returns a W3C DOM compatible range object by using the IE Range API - function getRange() { - var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed; - - // If selection is outside the current document just return an empty range - element = ieRange.item ? ieRange.item(0) : ieRange.parentElement(); - if (element.ownerDocument != dom.doc) - return domRange; - - // Handle control selection or text selection of a image - if (ieRange.item || !element.hasChildNodes()) { - domRange.setStart(element.parentNode, dom.nodeIndex(element)); - domRange.setEnd(domRange.startContainer, domRange.startOffset + 1); - - return domRange; - } - - collapsed = selection.isCollapsed(); - - function findEndPoint(start) { - var marker, container, offset, nodes, startIndex = 0, endIndex, index, parent, checkRng, position; - - // Setup temp range and collapse it - checkRng = ieRange.duplicate(); - checkRng.collapse(start); - - // Create marker and insert it at the end of the endpoints parent - marker = dom.create('a'); - parent = checkRng.parentElement(); - parent.appendChild(marker); - - // Setup node list and endIndex - nodes = tinymce.grep(parent.childNodes); - endIndex = nodes.length - 1; - - // Perform a binary search for the position - while (startIndex <= endIndex) { - index = Math.floor((startIndex + endIndex) / 2); - - // Insert marker and check it's position relative to the selection - parent.insertBefore(marker, nodes[index]); - checkRng.moveToElementText(marker); - position = ieRange.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', checkRng); - - if (position > 0) { - // Marker is to the right - startIndex = index + 1; - } else if (position < 0) { - // Marker is to the left - endIndex = index - 1; - } else { - // Maker is where we are - break; - } - } - - // Setup container - container = position > 0 || index == 0 ? marker.nextSibling : marker.previousSibling; - - // Handle element selection - if (container.nodeType == 1) { - dom.remove(marker); - - // Find offset and container - offset = dom.nodeIndex(container); - container = container.parentNode; - - // Move the offset if we are setting the end or the position is after an element - if (!start || index > 0) - offset++; - } else { - // Calculate offset within text node - if (position > 0 || index == 0) { - checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange); - offset = checkRng.text.length; - } else { - checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange); - offset = container.nodeValue.length - checkRng.text.length; - } - - dom.remove(marker); - } - - domRange[start ? 'setStart' : 'setEnd'](container, offset); - }; - - // Find start point - findEndPoint(true); - - // Find end point if needed - if (!collapsed) - findEndPoint(); - - return domRange; - }; - - this.addRange = function(rng) { - var ieRng, ieRng2, doc = selection.dom.doc, body = doc.body, startPos, endPos, sc, so, ec, eo, marker, lastIndex, skipStart, skipEnd; - - this.destroy(); - - // Setup some shorter versions - sc = rng.startContainer; - so = rng.startOffset; - ec = rng.endContainer; - eo = rng.endOffset; - ieRng = body.createTextRange(); - - // If document selection move caret to first node in document - if (sc == doc || ec == doc) { - ieRng = body.createTextRange(); - ieRng.collapse(); - ieRng.select(); - return; - } - - // If child index resolve it - if (sc.nodeType == 1 && sc.hasChildNodes()) { - lastIndex = sc.childNodes.length - 1; - - // Index is higher that the child count then we need to jump over the start container - if (so > lastIndex) { - skipStart = 1; - sc = sc.childNodes[lastIndex]; - } else - sc = sc.childNodes[so]; - - // Child was text node then move offset to start of it - if (sc.nodeType == 3) - so = 0; - } - - // If child index resolve it - if (ec.nodeType == 1 && ec.hasChildNodes()) { - lastIndex = ec.childNodes.length - 1; - - if (eo == 0) { - skipEnd = 1; - ec = ec.childNodes[0]; - } else { - ec = ec.childNodes[Math.min(lastIndex, eo - 1)]; - - // Child was text node then move offset to end of text node - if (ec.nodeType == 3) - eo = ec.nodeValue.length; - } - } - - // Single element selection - if (sc == ec && sc.nodeType == 1) { - // Make control selection for some elements - if (/^(IMG|TABLE)$/.test(sc.nodeName) && so != eo) { - ieRng = body.createControlRange(); - ieRng.addElement(sc); - } else { - ieRng = body.createTextRange(); - - // Padd empty elements with invisible character - if (!sc.hasChildNodes() && sc.canHaveHTML) - sc.innerHTML = invisibleChar; - - // Select element contents - ieRng.moveToElementText(sc); - - // If it's only containing a padding remove it so the caret remains - if (sc.innerHTML == invisibleChar) { - ieRng.collapse(TRUE); - sc.removeChild(sc.firstChild); - } - } - - if (so == eo) - ieRng.collapse(eo <= rng.endContainer.childNodes.length - 1); - - ieRng.select(); - ieRng.scrollIntoView(); - return; - } - - // Create range and marker - ieRng = body.createTextRange(); - marker = doc.createElement('span'); - marker.innerHTML = ' '; - - // Set start of range to startContainer/startOffset - if (sc.nodeType == 3) { - // Insert marker after/before startContainer - if (skipStart) - dom.insertAfter(marker, sc); - else - sc.parentNode.insertBefore(marker, sc); - - // Select marker the caret to offset position - ieRng.moveToElementText(marker); - marker.parentNode.removeChild(marker); - ieRng.move('character', so); - } else { - ieRng.moveToElementText(sc); - - if (skipStart) - ieRng.collapse(FALSE); - } - - // If same text container then we can do a more simple move - if (sc == ec && sc.nodeType == 3) { - ieRng.moveEnd('character', eo - so); - ieRng.select(); - ieRng.scrollIntoView(); - return; - } - - // Set end of range to endContainer/endOffset - ieRng2 = body.createTextRange(); - if (ec.nodeType == 3) { - // Insert marker after/before startContainer - ec.parentNode.insertBefore(marker, ec); - - // Move selection to end marker and move caret to end offset - ieRng2.moveToElementText(marker); - marker.parentNode.removeChild(marker); - ieRng2.move('character', eo); - ieRng.setEndPoint('EndToStart', ieRng2); - } else { - ieRng2.moveToElementText(ec); - ieRng2.collapse(!!skipEnd); - ieRng.setEndPoint('EndToEnd', ieRng2); - } - - ieRng.select(); - ieRng.scrollIntoView(); - }; - - this.getRangeAt = function() { - // Setup new range if the cache is empty - if (!range || !tinymce.dom.RangeUtils.compareRanges(lastIERng, selection.getRng())) { - range = getRange(); - - // Store away text range for next call - lastIERng = selection.getRng(); - } - - // IE will say that the range is equal then produce an invalid argument exception - // if you perform specific operations in a keyup event. For example Ctrl+Del. - // This hack will invalidate the range cache if the exception occurs - try { - range.startContainer.nextSibling; - } catch (ex) { - range = getRange(); - lastIERng = null; - } - - // Return cached range - return range; - }; - - this.destroy = function() { - // Destroy cached range and last IE range to avoid memory leaks - lastIERng = range = null; - }; - - // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode - if (selection.dom.boxModel) { - (function() { - var doc = dom.doc, body = doc.body, started, startRng; - - // Make HTML element unselectable since we are going to handle selection by hand - doc.documentElement.unselectable = TRUE; - - // Return range from point or null if it failed - function rngFromPoint(x, y) { - var rng = body.createTextRange(); - - try { - rng.moveToPoint(x, y); - } catch (ex) { - // IE sometimes throws and exception, so lets just ignore it - rng = null; - } - - return rng; - }; - - // Fires while the selection is changing - function selectionChange(e) { - var pointRng; - - // Check if the button is down or not - if (e.button) { - // Create range from mouse position - pointRng = rngFromPoint(e.x, e.y); - - if (pointRng) { - // Check if pointRange is before/after selection then change the endPoint - if (pointRng.compareEndPoints('StartToStart', startRng) > 0) - pointRng.setEndPoint('StartToStart', startRng); - else - pointRng.setEndPoint('EndToEnd', startRng); - - pointRng.select(); - } - } else - endSelection(); - } - - // Removes listeners - function endSelection() { - dom.unbind(doc, 'mouseup', endSelection); - dom.unbind(doc, 'mousemove', selectionChange); - started = 0; - }; - - // Detect when user selects outside BODY - dom.bind(doc, 'mousedown', function(e) { - if (e.target.nodeName === 'HTML') { - if (started) - endSelection(); - - started = 1; - - // Setup start position - startRng = rngFromPoint(e.x, e.y); - if (startRng) { - // Listen for selection change events - dom.bind(doc, 'mouseup', endSelection); - dom.bind(doc, 'mousemove', selectionChange); - - startRng.select(); - } - } - }); - })(); - } - }; - - // Expose the selection object - tinymce.dom.TridentSelection = Selection; -})(); - - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false; - -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context); - - // Reset the position of the chunker regexp (start from head) - chunker.lastIndex = 0; - - while ( (m = chunker.exec(selector)) !== null ) { - parts.push( m[1] ); - - if ( m[2] ) { - extra = RegExp.rightContext; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = false; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.match[ type ].exec( expr )) ) { - var left = RegExp.leftContext; - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !part.match(/\W/) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !part.match(/\W/) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while (node = node.previousSibling) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while (node = node.nextSibling) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

    "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
    "; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -window.tinymce.dom.Sizzle = Sizzle; - -})(); - - -(function(tinymce) { - // Shorten names - var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event; - - tinymce.create('tinymce.dom.EventUtils', { - EventUtils : function() { - this.inits = []; - this.events = []; - }, - - add : function(o, n, f, s) { - var cb, t = this, el = t.events, r; - - if (n instanceof Array) { - r = []; - - each(n, function(n) { - r.push(t.add(o, n, f, s)); - }); - - return r; - } - - // Handle array - if (o && o.hasOwnProperty && o instanceof Array) { - r = []; - - each(o, function(o) { - o = DOM.get(o); - r.push(t.add(o, n, f, s)); - }); - - return r; - } - - o = DOM.get(o); - - if (!o) - return; - - // Setup event callback - cb = function(e) { - // Is all events disabled - if (t.disabled) - return; - - e = e || window.event; - - // Patch in target, preventDefault and stopPropagation in IE it's W3C valid - if (e && isIE) { - if (!e.target) - e.target = e.srcElement; - - // Patch in preventDefault, stopPropagation methods for W3C compatibility - tinymce.extend(e, t._stoppers); - } - - if (!s) - return f(e); - - return f.call(s, e); - }; - - if (n == 'unload') { - tinymce.unloads.unshift({func : cb}); - return cb; - } - - if (n == 'init') { - if (t.domLoaded) - cb(); - else - t.inits.push(cb); - - return cb; - } - - // Store away listener reference - el.push({ - obj : o, - name : n, - func : f, - cfunc : cb, - scope : s - }); - - t._add(o, n, cb); - - return f; - }, - - remove : function(o, n, f) { - var t = this, a = t.events, s = false, r; - - // Handle array - if (o && o.hasOwnProperty && o instanceof Array) { - r = []; - - each(o, function(o) { - o = DOM.get(o); - r.push(t.remove(o, n, f)); - }); - - return r; - } - - o = DOM.get(o); - - each(a, function(e, i) { - if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) { - a.splice(i, 1); - t._remove(o, n, e.cfunc); - s = true; - return false; - } - }); - - return s; - }, - - clear : function(o) { - var t = this, a = t.events, i, e; - - if (o) { - o = DOM.get(o); - - for (i = a.length - 1; i >= 0; i--) { - e = a[i]; - - if (e.obj === o) { - t._remove(e.obj, e.name, e.cfunc); - e.obj = e.cfunc = null; - a.splice(i, 1); - } - } - } - }, - - cancel : function(e) { - if (!e) - return false; - - this.stop(e); - - return this.prevent(e); - }, - - stop : function(e) { - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; - - return false; - }, - - prevent : function(e) { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - - return false; - }, - - destroy : function() { - var t = this; - - each(t.events, function(e, i) { - t._remove(e.obj, e.name, e.cfunc); - e.obj = e.cfunc = null; - }); - - t.events = []; - t = null; - }, - - _add : function(o, n, f) { - if (o.attachEvent) - o.attachEvent('on' + n, f); - else if (o.addEventListener) - o.addEventListener(n, f, false); - else - o['on' + n] = f; - }, - - _remove : function(o, n, f) { - if (o) { - try { - if (o.detachEvent) - o.detachEvent('on' + n, f); - else if (o.removeEventListener) - o.removeEventListener(n, f, false); - else - o['on' + n] = null; - } catch (ex) { - // Might fail with permission denined on IE so we just ignore that - } - } - }, - - _pageInit : function(win) { - var t = this; - - // Keep it from running more than once - if (t.domLoaded) - return; - - t.domLoaded = true; - - each(t.inits, function(c) { - c(); - }); - - t.inits = []; - }, - - _wait : function(win) { - var t = this, doc = win.document; - - // No need since the document is already loaded - if (win.tinyMCE_GZ && tinyMCE_GZ.loaded) { - t.domLoaded = 1; - return; - } - - // Use IE method - if (doc.attachEvent) { - doc.attachEvent("onreadystatechange", function() { - if (doc.readyState === "complete") { - doc.detachEvent("onreadystatechange", arguments.callee); - t._pageInit(win); - } - }); - - if (doc.documentElement.doScroll && win == win.top) { - (function() { - if (t.domLoaded) - return; - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - doc.documentElement.doScroll("left"); - } catch (ex) { - setTimeout(arguments.callee, 0); - return; - } - - t._pageInit(win); - })(); - } - } else if (doc.addEventListener) { - t._add(win, 'DOMContentLoaded', function() { - t._pageInit(win); - }); - } - - t._add(win, 'load', function() { - t._pageInit(win); - }); - }, - - _stoppers : { - preventDefault : function() { - this.returnValue = false; - }, - - stopPropagation : function() { - this.cancelBubble = true; - } - } - }); - - Event = tinymce.dom.Event = new tinymce.dom.EventUtils(); - - // Dispatch DOM content loaded event for IE and Safari - Event._wait(window); - - tinymce.addUnload(function() { - Event.destroy(); - }); -})(tinymce); - -(function(tinymce) { - tinymce.dom.Element = function(id, settings) { - var t = this, dom, el; - - t.settings = settings = settings || {}; - t.id = id; - t.dom = dom = settings.dom || tinymce.DOM; - - // Only IE leaks DOM references, this is a lot faster - if (!tinymce.isIE) - el = dom.get(t.id); - - tinymce.each( - ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' + - 'setAttrib,setAttribs,getAttrib,addClass,removeClass,' + - 'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' + - 'isHidden,setHTML,get').split(/,/) - , function(k) { - t[k] = function() { - var a = [id], i; - - for (i = 0; i < arguments.length; i++) - a.push(arguments[i]); - - a = dom[k].apply(dom, a); - t.update(k); - - return a; - }; - }); - - tinymce.extend(t, { - on : function(n, f, s) { - return tinymce.dom.Event.add(t.id, n, f, s); - }, - - getXY : function() { - return { - x : parseInt(t.getStyle('left')), - y : parseInt(t.getStyle('top')) - }; - }, - - getSize : function() { - var n = dom.get(t.id); - - return { - w : parseInt(t.getStyle('width') || n.clientWidth), - h : parseInt(t.getStyle('height') || n.clientHeight) - }; - }, - - moveTo : function(x, y) { - t.setStyles({left : x, top : y}); - }, - - moveBy : function(x, y) { - var p = t.getXY(); - - t.moveTo(p.x + x, p.y + y); - }, - - resizeTo : function(w, h) { - t.setStyles({width : w, height : h}); - }, - - resizeBy : function(w, h) { - var s = t.getSize(); - - t.resizeTo(s.w + w, s.h + h); - }, - - update : function(k) { - var b; - - if (tinymce.isIE6 && settings.blocker) { - k = k || ''; - - // Ignore getters - if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0) - return; - - // Remove blocker on remove - if (k == 'remove') { - dom.remove(t.blocker); - return; - } - - if (!t.blocker) { - t.blocker = dom.uniqueId(); - b = dom.add(settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'}); - dom.setStyle(b, 'opacity', 0); - } else - b = dom.get(t.blocker); - - dom.setStyles(b, { - left : t.getStyle('left', 1), - top : t.getStyle('top', 1), - width : t.getStyle('width', 1), - height : t.getStyle('height', 1), - display : t.getStyle('display', 1), - zIndex : parseInt(t.getStyle('zIndex', 1) || 0) - 1 - }); - } - } - }); - }; -})(tinymce); - -(function(tinymce) { - function trimNl(s) { - return s.replace(/[\n\r]+/g, ''); - }; - - // Shorten names - var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each; - - tinymce.create('tinymce.dom.Selection', { - Selection : function(dom, win, serializer) { - var t = this; - - t.dom = dom; - t.win = win; - t.serializer = serializer; - - // Add events - each([ - 'onBeforeSetContent', - 'onBeforeGetContent', - 'onSetContent', - 'onGetContent' - ], function(e) { - t[e] = new tinymce.util.Dispatcher(t); - }); - - // No W3C Range support - if (!t.win.getSelection) - t.tridentSel = new tinymce.dom.TridentSelection(t); - - // Prevent leaks - tinymce.addUnload(t.destroy, t); - }, - - getContent : function(s) { - var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n; - - s = s || {}; - wb = wa = ''; - s.get = true; - s.format = s.format || 'html'; - t.onBeforeGetContent.dispatch(t, s); - - if (s.format == 'text') - return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : '')); - - if (r.cloneContents) { - n = r.cloneContents(); - - if (n) - e.appendChild(n); - } else if (is(r.item) || is(r.htmlText)) - e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText; - else - e.innerHTML = r.toString(); - - // Keep whitespace before and after - if (/^\s/.test(e.innerHTML)) - wb = ' '; - - if (/\s+$/.test(e.innerHTML)) - wa = ' '; - - s.getInner = true; - - s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa; - t.onGetContent.dispatch(t, s); - - return s.content; - }, - - setContent : function(h, s) { - var t = this, r = t.getRng(), c, d = t.win.document; - - s = s || {format : 'html'}; - s.set = true; - h = s.content = t.dom.processHTML(h); - - // Dispatch before set content event - t.onBeforeSetContent.dispatch(t, s); - h = s.content; - - if (r.insertNode) { - // Make caret marker since insertNode places the caret in the beginning of text after insert - h += '_'; - - // Delete and insert new node - if (r.startContainer == d && r.endContainer == d) { - // WebKit will fail if the body is empty since the range is then invalid and it can't insert contents - d.body.innerHTML = h; - } else { - r.deleteContents(); - r.insertNode(r.createContextualFragment(h)); - } - - // Move to caret marker - c = t.dom.get('__caret'); - - // Make sure we wrap it compleatly, Opera fails with a simple select call - r = d.createRange(); - r.setStartBefore(c); - r.setEndBefore(c); - t.setRng(r); - - // Remove the caret position - t.dom.remove('__caret'); - } else { - if (r.item) { - // Delete content and get caret text selection - d.execCommand('Delete', false, null); - r = t.getRng(); - } - - r.pasteHTML(h); - } - - // Dispatch set content event - t.onSetContent.dispatch(t, s); - }, - - getStart : function() { - var t = this, r = t.getRng(), e; - - if (r.duplicate || r.item) { - if (r.item) - return r.item(0); - - r = r.duplicate(); - r.collapse(1); - e = r.parentElement(); - - if (e && e.nodeName == 'BODY') - return e.firstChild || e; - - return e; - } else { - e = r.startContainer; - - if (e.nodeType == 1 && e.hasChildNodes()) - e = e.childNodes[Math.min(e.childNodes.length - 1, r.startOffset)]; - - if (e && e.nodeType == 3) - return e.parentNode; - - return e; - } - }, - - getEnd : function() { - var t = this, r = t.getRng(), e, eo; - - if (r.duplicate || r.item) { - if (r.item) - return r.item(0); - - r = r.duplicate(); - r.collapse(0); - e = r.parentElement(); - - if (e && e.nodeName == 'BODY') - return e.lastChild || e; - - return e; - } else { - e = r.endContainer; - eo = r.endOffset; - - if (e.nodeType == 1 && e.hasChildNodes()) - e = e.childNodes[eo > 0 ? eo - 1 : eo]; - - if (e && e.nodeType == 3) - return e.parentNode; - - return e; - } - }, - - getBookmark : function(type, normalized) { - var t = this, dom = t.dom, rng, rng2, id, collapsed, name, element, index, chr = '\uFEFF', styles; - - function findIndex(name, element) { - var index = 0; - - each(dom.select(name), function(node, i) { - if (node == element) - index = i; - }); - - return index; - }; - - if (type == 2) { - function getLocation() { - var rng = t.getRng(true), root = dom.getRoot(), bookmark = {}; - - function getPoint(rng, start) { - var container = rng[start ? 'startContainer' : 'endContainer'], - offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0; - - if (container.nodeType == 3) { - if (normalized) { - for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling) - offset += node.nodeValue.length; - } - - point.push(offset); - } else { - childNodes = container.childNodes; - - if (offset >= childNodes.length && childNodes.length) { - after = 1; - offset = Math.max(0, childNodes.length - 1); - } - - point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after); - } - - for (; container && container != root; container = container.parentNode) - point.push(t.dom.nodeIndex(container, normalized)); - - return point; - }; - - bookmark.start = getPoint(rng, true); - - if (!t.isCollapsed()) - bookmark.end = getPoint(rng); - - return bookmark; - }; - - return getLocation(); - } - - // Handle simple range - if (type) - return {rng : t.getRng()}; - - rng = t.getRng(); - id = dom.uniqueId(); - collapsed = tinyMCE.activeEditor.selection.isCollapsed(); - styles = 'overflow:hidden;line-height:0px'; - - // Explorer method - if (rng.duplicate || rng.item) { - // Text selection - if (!rng.item) { - rng2 = rng.duplicate(); - - // Insert start marker - rng.collapse(); - rng.pasteHTML('' + chr + ''); - - // Insert end marker - if (!collapsed) { - rng2.collapse(false); - rng2.pasteHTML('' + chr + ''); - } - } else { - // Control selection - element = rng.item(0); - name = element.nodeName; - - return {name : name, index : findIndex(name, element)}; - } - } else { - element = t.getNode(); - name = element.nodeName; - if (name == 'IMG') - return {name : name, index : findIndex(name, element)}; - - // W3C method - rng2 = rng.cloneRange(); - - // Insert end marker - if (!collapsed) { - rng2.collapse(false); - rng2.insertNode(dom.create('span', {_mce_type : "bookmark", id : id + '_end', style : styles}, chr)); - } - - rng.collapse(true); - rng.insertNode(dom.create('span', {_mce_type : "bookmark", id : id + '_start', style : styles}, chr)); - } - - t.moveToBookmark({id : id, keep : 1}); - - return {id : id}; - }, - - moveToBookmark : function(bookmark) { - var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset; - - // Clear selection cache - if (t.tridentSel) - t.tridentSel.destroy(); - - if (bookmark) { - if (bookmark.start) { - rng = dom.createRng(); - root = dom.getRoot(); - - function setEndPoint(start) { - var point = bookmark[start ? 'start' : 'end'], i, node, offset; - - if (point) { - // Find container node - for (node = root, i = point.length - 1; i >= 1; i--) - node = node.childNodes[point[i]]; - - // Set offset within container node - if (start) - rng.setStart(node, point[0]); - else - rng.setEnd(node, point[0]); - } - }; - - setEndPoint(true); - setEndPoint(); - - t.setRng(rng); - } else if (bookmark.id) { - function restoreEndPoint(suffix) { - var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep; - - if (marker) { - node = marker.parentNode; - - if (suffix == 'start') { - if (!keep) { - idx = dom.nodeIndex(marker); - } else { - node = marker; - idx = 1; - } - - startContainer = endContainer = node; - startOffset = endOffset = idx; - } else { - if (!keep) { - idx = dom.nodeIndex(marker); - } else { - node = marker; - idx = 1; - } - - endContainer = node; - endOffset = idx; - } - - if (!keep) { - prev = marker.previousSibling; - next = marker.nextSibling; - - // Remove all marker text nodes - each(tinymce.grep(marker.childNodes), function(node) { - if (node.nodeType == 3) - node.nodeValue = node.nodeValue.replace(/\uFEFF/g, ''); - }); - - // Remove marker but keep children if for example contents where inserted into the marker - // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature - while (marker = dom.get(bookmark.id + '_' + suffix)) - dom.remove(marker, 1); - - // If siblings are text nodes then merge them - if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3) { - idx = prev.nodeValue.length; - prev.appendData(next.nodeValue); - dom.remove(next); - - if (suffix == 'start') { - startContainer = endContainer = prev; - startOffset = endOffset = idx; - } else { - endContainer = prev; - endOffset = idx; - } - } - } - } - }; - - // Restore start/end points - restoreEndPoint('start'); - restoreEndPoint('end'); - - rng = dom.createRng(); - rng.setStart(startContainer, startOffset); - rng.setEnd(endContainer, endOffset); - t.setRng(rng); - } else if (bookmark.name) { - t.select(dom.select(bookmark.name)[bookmark.index]); - } else if (bookmark.rng) - t.setRng(bookmark.rng); - } - }, - - select : function(node, content) { - var t = this, dom = t.dom, rng = dom.createRng(), idx; - - idx = dom.nodeIndex(node); - rng.setStart(node.parentNode, idx); - rng.setEnd(node.parentNode, idx + 1); - - // Find first/last text node or BR element - if (content) { - function setPoint(node, start) { - var walker = new tinymce.dom.TreeWalker(node, node); - - do { - // Text node - if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { - if (start) - rng.setStart(node, 0); - else - rng.setEnd(node, node.nodeValue.length); - - return; - } - - // BR element - if (node.nodeName == 'BR') { - if (start) - rng.setStartBefore(node); - else - rng.setEndBefore(node); - - return; - } - } while (node = (start ? walker.next() : walker.prev())); - }; - - setPoint(node, 1); - setPoint(node); - } - - t.setRng(rng); - - return node; - }, - - isCollapsed : function() { - var t = this, r = t.getRng(), s = t.getSel(); - - if (!r || r.item) - return false; - - if (r.compareEndPoints) - return r.compareEndPoints('StartToEnd', r) === 0; - - return !s || r.collapsed; - }, - - collapse : function(b) { - var t = this, r = t.getRng(), n; - - // Control range on IE - if (r.item) { - n = r.item(0); - r = this.win.document.body.createTextRange(); - r.moveToElementText(n); - } - - r.collapse(!!b); - t.setRng(r); - }, - - getSel : function() { - var t = this, w = this.win; - - return w.getSelection ? w.getSelection() : w.document.selection; - }, - - getRng : function(w3c) { - var t = this, s, r; - - // Found tridentSel object then we need to use that one - if (w3c && t.tridentSel) - return t.tridentSel.getRangeAt(0); - - try { - if (s = t.getSel()) - r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : t.win.document.createRange()); - } catch (ex) { - // IE throws unspecified error here if TinyMCE is placed in a frame/iframe - } - - // No range found then create an empty one - // This can occur when the editor is placed in a hidden container element on Gecko - // Or on IE when there was an exception - if (!r) - r = t.win.document.createRange ? t.win.document.createRange() : t.win.document.body.createTextRange(); - - return r; - }, - - setRng : function(r) { - var s, t = this; - - if (!t.tridentSel) { - s = t.getSel(); - - if (s) { - s.removeAllRanges(); - s.addRange(r); - } - } else { - // Is W3C Range - if (r.cloneRange) { - t.tridentSel.addRange(r); - return; - } - - // Is IE specific range - try { - r.select(); - } catch (ex) { - // Needed for some odd IE bug #1843306 - } - } - }, - - setNode : function(n) { - var t = this; - - t.setContent(t.dom.getOuterHTML(n)); - - return n; - }, - - getNode : function() { - var t = this, rng = t.getRng(), sel = t.getSel(), elm; - - if (rng.setStart) { - // Range maybe lost after the editor is made visible again - if (!rng) - return t.dom.getRoot(); - - elm = rng.commonAncestorContainer; - - // Handle selection a image or other control like element such as anchors - if (!rng.collapsed) { - if (rng.startContainer == rng.endContainer) { - if (rng.startOffset - rng.endOffset < 2) { - if (rng.startContainer.hasChildNodes()) - elm = rng.startContainer.childNodes[rng.startOffset]; - } - } - - // If the anchor node is a element instead of a text node then return this element - if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1) - return sel.anchorNode.childNodes[sel.anchorOffset]; - } - - if (elm && elm.nodeType == 3) - return elm.parentNode; - - return elm; - } - - return rng.item ? rng.item(0) : rng.parentElement(); - }, - - getSelectedBlocks : function(st, en) { - var t = this, dom = t.dom, sb, eb, n, bl = []; - - sb = dom.getParent(st || t.getStart(), dom.isBlock); - eb = dom.getParent(en || t.getEnd(), dom.isBlock); - - if (sb) - bl.push(sb); - - if (sb && eb && sb != eb) { - n = sb; - - while ((n = n.nextSibling) && n != eb) { - if (dom.isBlock(n)) - bl.push(n); - } - } - - if (eb && sb != eb) - bl.push(eb); - - return bl; - }, - - destroy : function(s) { - var t = this; - - t.win = null; - - if (t.tridentSel) - t.tridentSel.destroy(); - - // Manual destroy then remove unload handler - if (!s) - tinymce.removeUnload(t.destroy); - } - }); -})(tinymce); - -(function(tinymce) { - tinymce.create('tinymce.dom.XMLWriter', { - node : null, - - XMLWriter : function(s) { - // Get XML document - function getXML() { - var i = document.implementation; - - if (!i || !i.createDocument) { - // Try IE objects - try {return new ActiveXObject('MSXML2.DOMDocument');} catch (ex) {} - try {return new ActiveXObject('Microsoft.XmlDom');} catch (ex) {} - } else - return i.createDocument('', '', null); - }; - - this.doc = getXML(); - - // Since Opera and WebKit doesn't escape > into > we need to do it our self to normalize the output for all browsers - this.valid = tinymce.isOpera || tinymce.isWebKit; - - this.reset(); - }, - - reset : function() { - var t = this, d = t.doc; - - if (d.firstChild) - d.removeChild(d.firstChild); - - t.node = d.appendChild(d.createElement("html")); - }, - - writeStartElement : function(n) { - var t = this; - - t.node = t.node.appendChild(t.doc.createElement(n)); - }, - - writeAttribute : function(n, v) { - if (this.valid) - v = v.replace(/>/g, '%MCGT%'); - - this.node.setAttribute(n, v); - }, - - writeEndElement : function() { - this.node = this.node.parentNode; - }, - - writeFullEndElement : function() { - var t = this, n = t.node; - - n.appendChild(t.doc.createTextNode("")); - t.node = n.parentNode; - }, - - writeText : function(v) { - if (this.valid) - v = v.replace(/>/g, '%MCGT%'); - - this.node.appendChild(this.doc.createTextNode(v)); - }, - - writeCDATA : function(v) { - this.node.appendChild(this.doc.createCDATASection(v)); - }, - - writeComment : function(v) { - // Fix for bug #2035694 - if (tinymce.isIE) - v = v.replace(/^\-|\-$/g, ' '); - - this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g, ' '))); - }, - - getContent : function() { - var h; - - h = this.doc.xml || new XMLSerializer().serializeToString(this.doc); - h = h.replace(/<\?[^?]+\?>||<\/html>||]+>/g, ''); - h = h.replace(/ ?\/>/g, ' />'); - - if (this.valid) - h = h.replace(/\%MCGT%/g, '>'); - - return h; - } - }); -})(tinymce); - -(function(tinymce) { - tinymce.create('tinymce.dom.StringWriter', { - str : null, - tags : null, - count : 0, - settings : null, - indent : null, - - StringWriter : function(s) { - this.settings = tinymce.extend({ - indent_char : ' ', - indentation : 0 - }, s); - - this.reset(); - }, - - reset : function() { - this.indent = ''; - this.str = ""; - this.tags = []; - this.count = 0; - }, - - writeStartElement : function(n) { - this._writeAttributesEnd(); - this.writeRaw('<' + n); - this.tags.push(n); - this.inAttr = true; - this.count++; - this.elementCount = this.count; - }, - - writeAttribute : function(n, v) { - var t = this; - - t.writeRaw(" " + t.encode(n) + '="' + t.encode(v) + '"'); - }, - - writeEndElement : function() { - var n; - - if (this.tags.length > 0) { - n = this.tags.pop(); - - if (this._writeAttributesEnd(1)) - this.writeRaw(''); - - if (this.settings.indentation > 0) - this.writeRaw('\n'); - } - }, - - writeFullEndElement : function() { - if (this.tags.length > 0) { - this._writeAttributesEnd(); - this.writeRaw(''); - - if (this.settings.indentation > 0) - this.writeRaw('\n'); - } - }, - - writeText : function(v) { - this._writeAttributesEnd(); - this.writeRaw(this.encode(v)); - this.count++; - }, - - writeCDATA : function(v) { - this._writeAttributesEnd(); - this.writeRaw(''); - this.count++; - }, - - writeComment : function(v) { - this._writeAttributesEnd(); - this.writeRaw(''); - this.count++; - }, - - writeRaw : function(v) { - this.str += v; - }, - - encode : function(s) { - return s.replace(/[<>&"]/g, function(v) { - switch (v) { - case '<': - return '<'; - - case '>': - return '>'; - - case '&': - return '&'; - - case '"': - return '"'; - } - - return v; - }); - }, - - getContent : function() { - return this.str; - }, - - _writeAttributesEnd : function(s) { - if (!this.inAttr) - return; - - this.inAttr = false; - - if (s && this.elementCount == this.count) { - this.writeRaw(' />'); - return false; - } - - this.writeRaw('>'); - - return true; - } - }); -})(tinymce); - -(function(tinymce) { - // Shorten names - var extend = tinymce.extend, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, isIE = tinymce.isIE, isGecko = tinymce.isGecko; - - function wildcardToRE(s) { - return s.replace(/([?+*])/g, '.$1'); - }; - - tinymce.create('tinymce.dom.Serializer', { - Serializer : function(s) { - var t = this; - - t.key = 0; - t.onPreProcess = new Dispatcher(t); - t.onPostProcess = new Dispatcher(t); - - try { - t.writer = new tinymce.dom.XMLWriter(); - } catch (ex) { - // IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter - t.writer = new tinymce.dom.StringWriter(); - } - - // Default settings - t.settings = s = extend({ - dom : tinymce.DOM, - valid_nodes : 0, - node_filter : 0, - attr_filter : 0, - invalid_attrs : /^(_mce_|_moz_|sizset|sizcache)/, - closed : /^(br|hr|input|meta|img|link|param|area)$/, - entity_encoding : 'named', - entities : '160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro', - valid_elements : '*[*]', - extended_valid_elements : 0, - invalid_elements : 0, - fix_table_elements : 1, - fix_list_elements : true, - fix_content_duplication : true, - convert_fonts_to_spans : false, - font_size_classes : 0, - apply_source_formatting : 0, - indent_mode : 'simple', - indent_char : '\t', - indent_levels : 1, - remove_linebreaks : 1, - remove_redundant_brs : 1, - element_format : 'xhtml' - }, s); - - t.dom = s.dom; - t.schema = s.schema; - - // Use raw entities if no entities are defined - if (s.entity_encoding == 'named' && !s.entities) - s.entity_encoding = 'raw'; - - if (s.remove_redundant_brs) { - t.onPostProcess.add(function(se, o) { - // Remove single BR at end of block elements since they get rendered - o.content = o.content.replace(/(
    \s*)+<\/(p|h[1-6]|div|li)>/gi, function(a, b, c) { - // Check if it's a single element - if (/^
    \s*<\//.test(a)) - return ''; - - return a; - }); - }); - } - - // Remove XHTML element endings i.e. produce crap :) XHTML is better - if (s.element_format == 'html') { - t.onPostProcess.add(function(se, o) { - o.content = o.content.replace(/<([^>]+) \/>/g, '<$1>'); - }); - } - - if (s.fix_list_elements) { - t.onPreProcess.add(function(se, o) { - var nl, x, a = ['ol', 'ul'], i, n, p, r = /^(OL|UL)$/, np; - - function prevNode(e, n) { - var a = n.split(','), i; - - while ((e = e.previousSibling) != null) { - for (i=0; i= 1767) { - each(t.dom.select('p table', o.node).reverse(), function(n) { - var parent = t.dom.getParent(n.parentNode, 'table,p'); - - if (parent.nodeName != 'TABLE') { - try { - t.dom.split(parent, n); - } catch (ex) { - // IE can sometimes fire an unknown runtime error so we just ignore it - } - } - }); - } - }); - } - }, - - setEntities : function(s) { - var t = this, a, i, l = {}, v; - - // No need to setup more than once - if (t.entityLookup) - return; - - // Build regex and lookup array - a = s.split(','); - for (i = 0; i < a.length; i += 2) { - v = a[i]; - - // Don't add default & " etc. - if (v == 34 || v == 38 || v == 60 || v == 62) - continue; - - l[String.fromCharCode(a[i])] = a[i + 1]; - - v = parseInt(a[i]).toString(16); - } - - t.entityLookup = l; - }, - - setRules : function(s) { - var t = this; - - t._setup(); - t.rules = {}; - t.wildRules = []; - t.validElements = {}; - - return t.addRules(s); - }, - - addRules : function(s) { - var t = this, dr; - - if (!s) - return; - - t._setup(); - - each(s.split(','), function(s) { - var p = s.split(/\[|\]/), tn = p[0].split('/'), ra, at, wat, va = []; - - // Extend with default rules - if (dr) - at = tinymce.extend([], dr.attribs); - - // Parse attributes - if (p.length > 1) { - each(p[1].split('|'), function(s) { - var ar = {}, i; - - at = at || []; - - // Parse attribute rule - s = s.replace(/::/g, '~'); - s = /^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s); - s[2] = s[2].replace(/~/g, ':'); - - // Add required attributes - if (s[1] == '!') { - ra = ra || []; - ra.push(s[2]); - } - - // Remove inherited attributes - if (s[1] == '-') { - for (i = 0; i = 1767)) { - // Create an empty HTML document - doc = impl.createHTMLDocument(""); - - // Add the element or it's children if it's a body element to the new document - each(n.nodeName == 'BODY' ? n.childNodes : [n], function(node) { - doc.body.appendChild(doc.importNode(node, true)); - }); - - // Grab first child or body element for serialization - if (n.nodeName != 'BODY') - n = doc.body.firstChild; - else - n = doc.body; - - // set the new document in DOMUtils so createElement etc works - oldDoc = t.dom.doc; - t.dom.doc = doc; - } - - t.key = '' + (parseInt(t.key) + 1); - - // Pre process - if (!o.no_events) { - o.node = n; - t.onPreProcess.dispatch(t, o); - } - - // Serialize HTML DOM into a string - t.writer.reset(); - t._info = o; - t._serializeNode(n, o.getInner); - - // Post process - o.content = t.writer.getContent(); - - // Restore the old document if it was changed - if (oldDoc) - t.dom.doc = oldDoc; - - if (!o.no_events) - t.onPostProcess.dispatch(t, o); - - t._postProcess(o); - o.node = null; - - return tinymce.trim(o.content); - }, - - // Internal functions - - _postProcess : function(o) { - var t = this, s = t.settings, h = o.content, sc = [], p; - - if (o.format == 'html') { - // Protect some elements - p = t._protect({ - content : h, - patterns : [ - {pattern : /(]*>)(.*?)(<\/script>)/g}, - {pattern : /(]*>)(.*?)(<\/noscript>)/g}, - {pattern : /(]*>)(.*?)(<\/style>)/g}, - {pattern : /(]*>)(.*?)(<\/pre>)/g, encode : 1}, - {pattern : /()/g} - ] - }); - - h = p.content; - - // Entity encode - if (s.entity_encoding !== 'raw') - h = t._encode(h); - - // Use BR instead of   padded P elements inside editor and use

     

    outside editor -/* if (o.set) - h = h.replace(/

    \s+( | |\u00a0|
    )\s+<\/p>/g, '


    '); - else - h = h.replace(/

    \s+( | |\u00a0|
    )\s+<\/p>/g, '

    $1

    ');*/ - - // Since Gecko and Safari keeps whitespace in the DOM we need to - // remove it inorder to match other browsers. But I think Gecko and Safari is right. - // This process is only done when getting contents out from the editor. - if (!o.set) { - // We need to replace paragraph whitespace with an nbsp before indentation to keep the \u00a0 char - h = h.replace(/

    \s+<\/p>|]+)>\s+<\/p>/g, s.entity_encoding == 'numeric' ? ' 

    ' : ' 

    '); - - if (s.remove_linebreaks) { - h = h.replace(/\r?\n|\r/g, ' '); - h = h.replace(/(<[^>]+>)\s+/g, '$1 '); - h = h.replace(/\s+(<\/[^>]+>)/g, ' $1'); - h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g, '<$1 $2>'); // Trim block start - h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g, '<$1>'); // Trim block start - h = h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g, ''); // Trim block end - } - - // Simple indentation - if (s.apply_source_formatting && s.indent_mode == 'simple') { - // Add line breaks before and after block elements - h = h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g, '\n<$1$2$3>\n'); - h = h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g, '\n<$1$2>'); - h = h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g, '\n'); - h = h.replace(/\n\n/g, '\n'); - } - } - - h = t._unprotect(h, p); - - // Restore CDATA sections - h = h.replace(//g, ''); - - // Restore the \u00a0 character if raw mode is enabled - if (s.entity_encoding == 'raw') - h = h.replace(/

     <\/p>|]+)> <\/p>/g, '\u00a0

    '); - - // Restore noscript elements - h = h.replace(/]+|)>([\s\S]*?)<\/noscript>/g, function(v, attribs, text) { - return '' + t.dom.decode(text.replace(//g, '')) + ''; - }); - } - - o.content = h; - }, - - _serializeNode : function(n, inner) { - var t = this, s = t.settings, w = t.writer, hc, el, cn, i, l, a, at, no, v, nn, ru, ar, iv, closed, keep, type; - - if (!s.node_filter || s.node_filter(n)) { - switch (n.nodeType) { - case 1: // Element - if (n.hasAttribute ? n.hasAttribute('_mce_bogus') : n.getAttribute('_mce_bogus')) - return; - - iv = keep = false; - hc = n.hasChildNodes(); - nn = n.getAttribute('_mce_name') || n.nodeName.toLowerCase(); - - // Get internal type - type = n.getAttribute('_mce_type'); - if (type) { - if (!t._info.cleanup) { - iv = true; - return; - } else - keep = 1; - } - - // Add correct prefix on IE - if (isIE) { - if (n.scopeName !== 'HTML' && n.scopeName !== 'html') - nn = n.scopeName + ':' + nn; - } - - // Remove mce prefix on IE needed for the abbr element - if (nn.indexOf('mce:') === 0) - nn = nn.substring(4); - - // Check if valid - if (!keep) { - if (!t.validElementsRE || !t.validElementsRE.test(nn) || (t.invalidElementsRE && t.invalidElementsRE.test(nn)) || inner) { - iv = true; - break; - } - } - - if (isIE) { - // Fix IE content duplication (DOM can have multiple copies of the same node) - if (s.fix_content_duplication) { - if (n._mce_serialized == t.key) - return; - - n._mce_serialized = t.key; - } - - // IE sometimes adds a / infront of the node name - if (nn.charAt(0) == '/') - nn = nn.substring(1); - } else if (isGecko) { - // Ignore br elements - if (n.nodeName === 'BR' && n.getAttribute('type') == '_moz') - return; - } - - // Check if valid child - if (s.validate_children) { - if (t.elementName && !t.schema.isValid(t.elementName, nn)) { - iv = true; - break; - } - - t.elementName = nn; - } - - ru = t.findRule(nn); - - // No valid rule for this element could be found then skip it - if (!ru) { - iv = true; - break; - } - - nn = ru.name || nn; - closed = s.closed.test(nn); - - // Skip empty nodes or empty node name in IE - if ((!hc && ru.noEmpty) || (isIE && !nn)) { - iv = true; - break; - } - - // Check required - if (ru.requiredAttribs) { - a = ru.requiredAttribs; - - for (i = a.length - 1; i >= 0; i--) { - if (this.dom.getAttrib(n, a[i]) !== '') - break; - } - - // None of the required was there - if (i == -1) { - iv = true; - break; - } - } - - w.writeStartElement(nn); - - // Add ordered attributes - if (ru.attribs) { - for (i=0, at = ru.attribs, l = at.length; i-1; i--) { - no = at[i]; - - if (no.specified) { - a = no.nodeName.toLowerCase(); - - if (s.invalid_attrs.test(a) || !ru.validAttribsRE.test(a)) - continue; - - ar = t.findAttribRule(ru, a); - v = t._getAttrib(n, ar, a); - - if (v !== null) - w.writeAttribute(a, v); - } - } - } - - // Keep type attribute - if (type && keep) - w.writeAttribute('_mce_type', type); - - // Write text from script - if (nn === 'script' && tinymce.trim(n.innerHTML)) { - w.writeText('// '); // Padd it with a comment so it will parse on older browsers - w.writeCDATA(n.innerHTML.replace(/|<\[CDATA\[|\]\]>/g, '')); // Remove comments and cdata stuctures - hc = false; - break; - } - - // Padd empty nodes with a   - if (ru.padd) { - // If it has only one bogus child, padd it anyway workaround for
    bug - if (hc && (cn = n.firstChild) && cn.nodeType === 1 && n.childNodes.length === 1) { - if (cn.hasAttribute ? cn.hasAttribute('_mce_bogus') : cn.getAttribute('_mce_bogus')) - w.writeText('\u00a0'); - } else if (!hc) - w.writeText('\u00a0'); // No children then padd it - } - - break; - - case 3: // Text - // Check if valid child - if (s.validate_children && t.elementName && !t.schema.isValid(t.elementName, '#text')) - return; - - return w.writeText(n.nodeValue); - - case 4: // CDATA - return w.writeCDATA(n.nodeValue); - - case 8: // Comment - return w.writeComment(n.nodeValue); - } - } else if (n.nodeType == 1) - hc = n.hasChildNodes(); - - if (hc && !closed) { - cn = n.firstChild; - - while (cn) { - t._serializeNode(cn); - t.elementName = nn; - cn = cn.nextSibling; - } - } - - // Write element end - if (!iv) { - if (!closed) - w.writeFullEndElement(); - else - w.writeEndElement(); - } - }, - - _protect : function(o) { - var t = this; - - o.items = o.items || []; - - function enc(s) { - return s.replace(/[\r\n\\]/g, function(c) { - if (c === '\n') - return '\\n'; - else if (c === '\\') - return '\\\\'; - - return '\\r'; - }); - }; - - function dec(s) { - return s.replace(/\\[\\rn]/g, function(c) { - if (c === '\\n') - return '\n'; - else if (c === '\\\\') - return '\\'; - - return '\r'; - }); - }; - - each(o.patterns, function(p) { - o.content = dec(enc(o.content).replace(p.pattern, function(x, a, b, c) { - b = dec(b); - - if (p.encode) - b = t._encode(b); - - o.items.push(b); - return a + '' + c; - })); - }); - - return o; - }, - - _unprotect : function(h, o) { - h = h.replace(/\')); - } - - // Add toolbar end before list box and after the previous button - // This is to fix the o2k7 editor skins - if (pr && co.ListBox) { - if (pr.Button || pr.SplitButton) - h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '')); - } - - // Render control HTML - - // IE 8 quick fix, needed to propertly generate a hit area for anchors - if (dom.stdMode) - h += '' + co.renderHTML() + ''; - else - h += '' + co.renderHTML() + ''; - - // Add toolbar start after list box and before the next button - // This is to fix the o2k7 editor skins - if (nx && co.ListBox) { - if (nx.Button || nx.SplitButton) - h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '')); - } - } - - c = 'mceToolbarEnd'; - - if (co.Button) - c += ' mceToolbarEndButton'; - else if (co.SplitButton) - c += ' mceToolbarEndSplitButton'; - else if (co.ListBox) - c += ' mceToolbarEndListBox'; - - h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '')); - - return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '' + h + ''); - } -}); - -(function(tinymce) { - var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each; - - tinymce.create('tinymce.AddOnManager', { - items : [], - urls : {}, - lookup : {}, - - onAdd : new Dispatcher(this), - - get : function(n) { - return this.lookup[n]; - }, - - requireLangPack : function(n) { - var s = tinymce.settings; - - if (s && s.language) - tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js'); - }, - - add : function(id, o) { - this.items.push(o); - this.lookup[id] = o; - this.onAdd.dispatch(this, id, o); - - return o; - }, - - load : function(n, u, cb, s) { - var t = this; - - if (t.urls[n]) - return; - - if (u.indexOf('/') != 0 && u.indexOf('://') == -1) - u = tinymce.baseURL + '/' + u; - - t.urls[n] = u.substring(0, u.lastIndexOf('/')); - tinymce.ScriptLoader.add(u, cb, s); - } - }); - - // Create plugin and theme managers - tinymce.PluginManager = new tinymce.AddOnManager(); - tinymce.ThemeManager = new tinymce.AddOnManager(); -}(tinymce)); - -(function(tinymce) { - // Shorten names - var each = tinymce.each, extend = tinymce.extend, - DOM = tinymce.DOM, Event = tinymce.dom.Event, - ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, - explode = tinymce.explode, - Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0; - - // Setup some URLs where the editor API is located and where the document is - tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); - if (!/[\/\\]$/.test(tinymce.documentBaseURL)) - tinymce.documentBaseURL += '/'; - - tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL); - - tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL); - - // Add before unload listener - // This was required since IE was leaking memory if you added and removed beforeunload listeners - // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event - tinymce.onBeforeUnload = new Dispatcher(tinymce); - - // Must be on window or IE will leak if the editor is placed in frame or iframe - Event.add(window, 'beforeunload', function(e) { - tinymce.onBeforeUnload.dispatch(tinymce, e); - }); - - tinymce.onAddEditor = new Dispatcher(tinymce); - - tinymce.onRemoveEditor = new Dispatcher(tinymce); - - tinymce.EditorManager = extend(tinymce, { - editors : [], - - i18n : {}, - - activeEditor : null, - - init : function(s) { - var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed; - - function execCallback(se, n, s) { - var f = se[n]; - - if (!f) - return; - - if (tinymce.is(f, 'string')) { - s = f.replace(/\.\w+$/, ''); - s = s ? tinymce.resolve(s) : 0; - f = tinymce.resolve(f); - } - - return f.apply(s || this, Array.prototype.slice.call(arguments, 2)); - }; - - s = extend({ - theme : "simple", - language : "en" - }, s); - - t.settings = s; - - // Legacy call - Event.add(document, 'init', function() { - var l, co; - - execCallback(s, 'onpageload'); - - switch (s.mode) { - case "exact": - l = s.elements || ''; - - if(l.length > 0) { - each(explode(l), function(v) { - if (DOM.get(v)) { - ed = new tinymce.Editor(v, s); - el.push(ed); - ed.render(1); - } else { - each(document.forms, function(f) { - each(f.elements, function(e) { - if (e.name === v) { - v = 'mce_editor_' + instanceCounter++; - DOM.setAttrib(e, 'id', v); - - ed = new tinymce.Editor(v, s); - el.push(ed); - ed.render(1); - } - }); - }); - } - }); - } - break; - - case "textareas": - case "specific_textareas": - function hasClass(n, c) { - return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c); - }; - - each(DOM.select('textarea'), function(v) { - if (s.editor_deselector && hasClass(v, s.editor_deselector)) - return; - - if (!s.editor_selector || hasClass(v, s.editor_selector)) { - // Can we use the name - e = DOM.get(v.name); - if (!v.id && !e) - v.id = v.name; - - // Generate unique name if missing or already exists - if (!v.id || t.get(v.id)) - v.id = DOM.uniqueId(); - - ed = new tinymce.Editor(v.id, s); - el.push(ed); - ed.render(1); - } - }); - break; - } - - // Call onInit when all editors are initialized - if (s.oninit) { - l = co = 0; - - each(el, function(ed) { - co++; - - if (!ed.initialized) { - // Wait for it - ed.onInit.add(function() { - l++; - - // All done - if (l == co) - execCallback(s, 'oninit'); - }); - } else - l++; - - // All done - if (l == co) - execCallback(s, 'oninit'); - }); - } - }); - }, - - get : function(id) { - if (id === undefined) - return this.editors; - - return this.editors[id]; - }, - - getInstanceById : function(id) { - return this.get(id); - }, - - add : function(editor) { - var self = this, editors = self.editors; - - // Add named and index editor instance - editors[editor.id] = editor; - editors.push(editor); - - self._setActive(editor); - self.onAddEditor.dispatch(self, editor); - - - return editor; - }, - - remove : function(editor) { - var t = this, i, editors = t.editors; - - // Not in the collection - if (!editors[editor.id]) - return null; - - delete editors[editor.id]; - - for (i = 0; i < editors.length; i++) { - if (editors[i] == editor) { - editors.splice(i, 1); - break; - } - } - - // Select another editor since the active one was removed - if (t.activeEditor == editor) - t._setActive(editors[0]); - - editor.destroy(); - t.onRemoveEditor.dispatch(t, editor); - - return editor; - }, - - execCommand : function(c, u, v) { - var t = this, ed = t.get(v), w; - - // Manager commands - switch (c) { - case "mceFocus": - ed.focus(); - return true; - - case "mceAddEditor": - case "mceAddControl": - if (!t.get(v)) - new tinymce.Editor(v, t.settings).render(); - - return true; - - case "mceAddFrameControl": - w = v.window; - - // Add tinyMCE global instance and tinymce namespace to specified window - w.tinyMCE = tinyMCE; - w.tinymce = tinymce; - - tinymce.DOM.doc = w.document; - tinymce.DOM.win = w; - - ed = new tinymce.Editor(v.element_id, v); - ed.render(); - - // Fix IE memory leaks - if (tinymce.isIE) { - function clr() { - ed.destroy(); - w.detachEvent('onunload', clr); - w = w.tinyMCE = w.tinymce = null; // IE leak - }; - - w.attachEvent('onunload', clr); - } - - v.page_window = null; - - return true; - - case "mceRemoveEditor": - case "mceRemoveControl": - if (ed) - ed.remove(); - - return true; - - case 'mceToggleEditor': - if (!ed) { - t.execCommand('mceAddControl', 0, v); - return true; - } - - if (ed.isHidden()) - ed.show(); - else - ed.hide(); - - return true; - } - - // Run command on active editor - if (t.activeEditor) - return t.activeEditor.execCommand(c, u, v); - - return false; - }, - - execInstanceCommand : function(id, c, u, v) { - var ed = this.get(id); - - if (ed) - return ed.execCommand(c, u, v); - - return false; - }, - - triggerSave : function() { - each(this.editors, function(e) { - e.save(); - }); - }, - - addI18n : function(p, o) { - var lo, i18n = this.i18n; - - if (!tinymce.is(p, 'string')) { - each(p, function(o, lc) { - each(o, function(o, g) { - each(o, function(o, k) { - if (g === 'common') - i18n[lc + '.' + k] = o; - else - i18n[lc + '.' + g + '.' + k] = o; - }); - }); - }); - } else { - each(o, function(o, k) { - i18n[p + '.' + k] = o; - }); - } - }, - - // Private methods - - _setActive : function(editor) { - this.selectedInstance = this.activeEditor = editor; - } - }); -})(tinymce); - -(function(tinymce) { - // Shorten these names - var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, - Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko, - isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is, - ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, - inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode; - - tinymce.create('tinymce.Editor', { - Editor : function(id, s) { - var t = this; - - t.id = t.editorId = id; - - t.execCommands = {}; - t.queryStateCommands = {}; - t.queryValueCommands = {}; - - t.isNotDirty = false; - - t.plugins = {}; - - // Add events to the editor - each([ - 'onPreInit', - - 'onBeforeRenderUI', - - 'onPostRender', - - 'onInit', - - 'onRemove', - - 'onActivate', - - 'onDeactivate', - - 'onClick', - - 'onEvent', - - 'onMouseUp', - - 'onMouseDown', - - 'onDblClick', - - 'onKeyDown', - - 'onKeyUp', - - 'onKeyPress', - - 'onContextMenu', - - 'onSubmit', - - 'onReset', - - 'onPaste', - - 'onPreProcess', - - 'onPostProcess', - - 'onBeforeSetContent', - - 'onBeforeGetContent', - - 'onSetContent', - - 'onGetContent', - - 'onLoadContent', - - 'onSaveContent', - - 'onNodeChange', - - 'onChange', - - 'onBeforeExecCommand', - - 'onExecCommand', - - 'onUndo', - - 'onRedo', - - 'onVisualAid', - - 'onSetProgressState' - ], function(e) { - t[e] = new Dispatcher(t); - }); - - t.settings = s = extend({ - id : id, - language : 'en', - docs_language : 'en', - theme : 'simple', - skin : 'default', - delta_width : 0, - delta_height : 0, - popup_css : '', - plugins : '', - document_base_url : tinymce.documentBaseURL, - add_form_submit_trigger : 1, - submit_patch : 1, - add_unload_trigger : 1, - convert_urls : 1, - relative_urls : 1, - remove_script_host : 1, - table_inline_editing : 0, - object_resizing : 1, - cleanup : 1, - accessibility_focus : 1, - custom_shortcuts : 1, - custom_undo_redo_keyboard_shortcuts : 1, - custom_undo_redo_restore_selection : 1, - custom_undo_redo : 1, - doctype : tinymce.isIE6 ? '' : '', // Use old doctype on IE 6 to avoid horizontal scroll - visual_table_class : 'mceItemTable', - visual : 1, - font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large', - apply_source_formatting : 1, - directionality : 'ltr', - forced_root_block : 'p', - valid_elements : '@[id|class|style|title|dir