Economics MID TERM NEEDED ASAP
You are here
- CampusLearning
- / ► SOC101_FEB13
- / ► Quizzes
- / ► Week 3 Activity 1: Midterm Exam
- / ► Attempt 1
Week 3 Activity 1: Midterm Exam
Question 1 Marks: --/8 In general, what is a price index? What questions does it help answer? Answer:| a. when another unit of the good is sold, total revenue increases by the price of the good | ||
| b. when another unit of the good is sold, total revenue decreases by the price of the good | ||
| c. when another unit of the good is sold, total revenue increases by less than the price of the good | ||
| d. when another unit of the good is sold, total revenue increases by more than the price |
| a. firms supply more of a product as consumer income rises | ||
| b. firms supply more of a product as consumer income falls | ||
| c. firms supply more of a product as the price of the product rises | ||
| d. firms supply more of a product as the price of the product falls |
| a. the change in price divided by the change in quantity demanded | ||
| b. the change in quantity demanded divided by the change in price | ||
| c. the percentage change in price divided by the percentage change in quantity demanded | ||
| d. the percentage change in quantity demanded divided by the percentage change in price |
| a. there are no buyers willing to purchase what sellers have produced | ||
| b. there are not enough goods to satisfy all of the buyers’ demand | ||
| c. resources are limited in quantity and can be used in different ways | ||
| d. there is not enough money to satisfy consumers’ wants |
| is cost that varies with the level of output | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| is cost that does not vary with output | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| is the sum of total variable cost and total fixed cost | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| shows the additional cost of each additional unit of output a firm produces | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| is total cost divided by quantity. | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| is the firm’s variable cost per unit of output; it is total variable cost divided by quantity | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) | |
| which is total fixed cost divided by quantity | Choose... Total variable cost (TVC) Marginal cost (MC) Average fixed cost (AFC) Total cost (TC) Average total cost (ATC) Average Variable Cost (AVC) Total fixed cost (TFC) |
| a. some, none | ||
| b. all, none | ||
| c. no, at least some | ||
| d. all, at least some |
| a. monopolists being prohibited from selling their products to certain customers | ||
| b. a policy that some countries establish to reduce imports from other countries | ||
| c. factors that prevent other firms from challenging a firm with monopoly power | ||
| d. economic profits that are positive, but too high to encourage entry |
| Local residential electric power | Choose... monopolistic competition perfect competition monopoly oligopoly | |
| soft drinks | Choose... monopolistic competition perfect competition monopoly oligopoly | |
| long-distance service | Choose... monopolistic competition perfect competition monopoly oligopoly | |
| lumber | Choose... monopolistic competition perfect competition monopoly oligopoly |
| are people or firms that consume a public good without paying for it | Choose... common property resources free riders market power Consumer surplus market failure producer surplus | |
| measures the difference between total revenue received by firms at a given quantity of output and the total cost of producing it | Choose... common property resources free riders market power Consumer surplus market failure producer surplus | |
| are resources for which no property rights have been defined | Choose... common property resources free riders market power Consumer surplus market failure producer surplus | |
| is the ability to change the market price | Choose... common property resources free riders market power Consumer surplus market failure producer surplus | |
| is the failure of private decision in the marketplace to achieve an efficient allocation of scarce resources | Choose... common property resources free riders market power Consumer surplus market failure producer surplus | |
| is the amount by which the total benefits to consumers from consuming a good exceed their total expenditures on the good | Choose... common property resources free riders market power Consumer surplus market failure producer surplus |
| a. all factors of production are fixed | ||
| b. all factors of production are variable | ||
| c. some factors of production are variable, while at least one factor of production is fixed | ||
| d. at least one factor of production are fixed, and at least two factors of production are variable |
| a. all factors of production are fixed | ||
| b. all factors of production are variable | ||
| c. some factors of production are variable, while at least one factor of production is fixed | ||
| d. No factors of production are fixed, and at least two factors of production are variable |
| a. the price of a good and the quantity that consumers are willing to buy | ||
| b. the price of a good and the quantity that producers are willing to sell | ||
| c. the income of consumers and the quantity of a product that consumers are willing to buy | ||
| d. the income of consumers and the quantity of a product that producers are willing to sell |
| a. upward sloping | ||
| b. inelastic | ||
| c. unitary elastic | ||
| d. elastic |
| a. the price of a good and the quantity of that good that consumers are willing to buy | ||
| b. the price of a good and the quantity of that good that producers are willing to sell | ||
| c. the income of consumers and the quantity of a good that consumers are willing to buy | ||
| d. the income of consumers and the quantity of a good that producers are willing to sell |
| a. Produce where MR = MC | ||
| b. Produce where MR > MC | ||
| c. Produce where MR < MC | ||
| d. Produce where TR > TC |
| a. price exceeds average fixed cost at the level of output where marginal revenue equals marginal cost | ||
| b. price exceeds average variable cost at the level of output where marginal revenue equals marginal cost | ||
| c. price exceeds marginal cost at the level of output where marginal revenue equals marginal cost | ||
| d. price exceeds total revenue at the level of output where marginal revenue equals marginal |
Sotoland is a small
country that produces two types of products, air conditioners, and snowmobiles.
Its production possibilities frontier is illustrated in Figure 1.2. Which
combination of air conditioners and snowmobiles is unattainable?
Choose one answer.
| a. 200 air conditioners and 700 snowmobiles | ||
| b. 400 air conditioners and 500 snowmobiles | ||
| c. 600 air conditioners and 300 snowmobiles | ||
| d. More than one combination is unattainable |
| a. resources used to produce goods and services | ||
| b. processes used to produce goods and services | ||
| c. places where goods and services are produced | ||
| d. tradeoffs involved in producing goods and services |
| a. one of a small number of firms and there is a barrier to entry | ||
| b. one of a large number of firms and there is a barrier to entry | ||
| c. one of a large number of firms and there are no barriers to entry | ||
| d. the single seller of a good and there is a barrier to entry |
| a. is zero if your parents pay your tuition | ||
| b. is equal to the cost of tuition, room and board, and other expenses | ||
| c. includes wages you lose by going to school instead of working | ||
| d. is the same for all students at a particular school who pay full tuition |
| a. there is excess supply of the product in the market | ||
| b. there is excess demand for the product in the market | ||
| c. the market is in equilibrium | ||
| d. the demand curve will shift until the quantity supplied equals the quantity demanded |
| a. financial decision-making | ||
| b. how consumers make purchasing decisions | ||
| c. choices made by people faced with scarcity | ||
| d. inflation, unemployment and economic growth |
| a. the cost of the labor used to produce it | ||
| b. the best alternative you sacrifice to get it | ||
| c. the price charged for it | ||
| d. the search cost required to find it |
Which of the following goods or services are public? Which are private?
| Libraries | Choose... private public | |
| National defense | Choose... private public | |
| Fire protection | Choose... private public | |
| pepperoni pizza | Choose... private public | |
| cable television | Choose... private public | |
| designer shoes | Choose... private public |
| a situation in which there are too few resources to meet all human wants | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost | |
| the value of the best alternative opportunity forgone | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost | |
| a model that shows the various combinations of two goods the economy is capable of producing | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost | |
| a model of the economy that depicts how the flow of money facilitates a counter flow of resources, goods, and services in the input and output markets | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost | |
| the ability to produce a good at a lower opportunity cost (other goods forgone) than other could do | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost | |
| the ability to produce a good with fewer resources than other producers | Choose... scarcity absolute advantages comparative advantages Circular flow Production Possibilities Frontier opportunity cost |
| At a price of $1.50 per dozen, how many bagels are demanded per month? | Choose... 6 8 4 12 10 2.50 | |
| At a price of $1.50 per dozen, how many bagels are supplied per month? | Choose... 6 8 4 12 10 2.50 | |
| At a price of $3.00 per dozen, how many bagels are demanded per month? | Choose... 6 8 4 12 10 2.50 | |
| At a price of $3.00 per dozen, how many bagels are supplied per month? | Choose... 6 8 4 12 10 2.50 | |
| What is the equilibrium price of bagels? | Choose... 6 8 4 12 10 2.50 | |
| What is the equilibrium quantity per month? | Choose... 6 8 4 12 10 2.50 |
| a. perfectly competitive market | ||
| b. monopoly | ||
| c. oligopoly | ||
| d. Any of the above could be correct |
| a. produced only by firms | ||
| b. unlimited | ||
| c. used to produce goods and services | ||
| d. only provided by nature, not made by human beings |
You are logged in as Daisy Camacho (Logout) SOC101_FEB13
H1.main { TEXT-ALIGN: center } H2.main { TEXT-ALIGN: center } H3.main { TEXT-ALIGN: center } H4.main { TEXT-ALIGN: center } H5.main { TEXT-ALIGN: center } H6.main { TEXT-ALIGN: center } #layout-table { MARGIN-TOP: 8px; WIDTH: 100%; BORDER-COLLAPSE: separate } #layout-table #left-column { VERTICAL-ALIGN: top } #layout-table #middle-column { VERTICAL-ALIGN: top } #layout-table #right-column { VERTICAL-ALIGN: top } #layout-table #middle-column { PADDING-LEFT: 12px; PADDING-RIGHT: 12px } .clearer { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1px; CLEAR: both; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .clearfix { MIN-WIDTH: 0px } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } #redirect { TEXT-ALIGN: center; MARGIN-TOP: 10% } #redirect #message { } #redirect #continue { } * HTML .clearfix { HEIGHT: 1% } .clearfix { DISPLAY: block } .mdl-align { TEXT-ALIGN: center } .mdl-left { TEXT-ALIGN: left } .mdl-right { TEXT-ALIGN: right } .continuebutton { TEXT-ALIGN: center } FORM { MARGIN-BOTTOM: 0px } TABLE { BORDER-SPACING: 0; BORDER-COLLAPSE: collapse } A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } IMG.userpicture { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } IMG.grouppicture { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #grouppicture { TEXT-ALIGN: center } DIV.groupselector { MARGIN-TOP: 3px; MARGIN-BOTTOM: 3px; FLOAT: left } #addmembersform TABLE { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .notifyproblem { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .notifysuccess { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .notifytiny { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .singlebutton FORM { DISPLAY: inline } .singlebutton DIV { DISPLAY: inline } .box { CLEAR: both } .generalbox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 10px } .generalbox#intro { PADDING-BOTTOM: 15px; WIDTH: 70%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .boxaligncenter { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .boxalignright { MARGIN-LEFT: auto; MARGIN-RIGHT: 0px } .boxalignleft { MARGIN-LEFT: 0px; MARGIN-RIGHT: auto } .boxwidthnarrow { WIDTH: 30% } .boxwidthnormal { WIDTH: 50% } .boxwidthwide { WIDTH: 80% } .centerpara { TEXT-ALIGN: center } .noticebox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 10px } .generalbox#notice { WIDTH: 60%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #notice .buttons { TEXT-ALIGN: center } #notice .buttons DIV { DISPLAY: inline } #notice .buttons FORM { DISPLAY: inline } #notice .singlebutton { TEXT-ALIGN: center; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .errorbox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1em 15%; PADDING-LEFT: 10px; WIDTH: 70%; PADDING-RIGHT: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 10px } .errorbox .title { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .informationbox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 10px } .feedbackbox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .feedbackby { } .feedback { } .rsslink { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .printicon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .generaltable { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .generaltable .cell { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-COLLAPSE: collapse; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #participationreport .reporttable { TEXT-ALIGN: center; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #participationreport { TEXT-ALIGN: center } #participationreport .modulename { FONT-WEIGHT: bold } #participationreportselector { TEXT-ALIGN: center } #participationreportactions { TEXT-ALIGN: center } .initialbar { TEXT-ALIGN: center } #help .indent { MARGIN-LEFT: 3em } .closewindow { TEXT-ALIGN: center } #help .helpindex { TEXT-ALIGN: center } .tabledivider { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .sitetopic { MARGIN-BOTTOM: 20px } .sitetopiccontent { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .pagingbar { TEXT-ALIGN: center } TABLE.formtable { MARGIN: auto } TABLE.formtable TBODY TH { VERTICAL-ALIGN: top } TABLE.formtable TBODY TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } TABLE.formtable TBODY TH { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } TABLE.formtable TBODY .htmlarea TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } TABLE.formtable TBODY .htmlarea TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .flexible TH { WHITE-SPACE: nowrap } .paging { TEXT-ALIGN: center; MARGIN: 10px 0px } .unread { PADDING-RIGHT: 2px } .cell { VERTICAL-ALIGN: top } .helplink IMG { MARGIN: 0px 2px; WIDTH: 17px; HEIGHT: 17px; VERTICAL-ALIGN: middle } IMG.emoticon { WIDTH: 15px; HEIGHT: 15px; VERTICAL-ALIGN: middle } FORM.popupform { DISPLAY: inline } FORM.popupform DIV { DISPLAY: inline } FORM.popupform LABEL { MARGIN-RIGHT: 0.5em } .arrow_button { MARGIN-TOP: 3em } .arrow_button INPUT { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; OVERFLOW: hidden; PADDING-TOP: 0.3em } .groupmanagementtable TD { VERTICAL-ALIGN: top } .groupmanagementtable P { TEXT-ALIGN: center } .groupmanagementtable SELECT { WIDTH: 18em } #group-groupings .buttons { TEXT-ALIGN: center; MARGIN: 20px } #group-groupings .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } #group-usersummary { WIDTH: 14em } IMG.icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 16px; HEIGHT: 16px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; MARGIN-RIGHT: 4px; BORDER-RIGHT: 0px } IMG.iconsmall { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 11px; HEIGHT: 11px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; MARGIN-RIGHT: 1px; BORDER-RIGHT: 0px } IMG.iconhelp { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 17px; HEIGHT: 17px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; MARGIN-RIGHT: 4px; BORDER-RIGHT: 0px } IMG.iconkbhelp { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 49px; HEIGHT: 17px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .accesshide { POSITION: absolute; FONT-SIZE: 1em; TOP: -100000px; FONT-WEIGHT: normal; LEFT: 10px } .invisiblefieldset { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN.hide { DISPLAY: none } DIV.hide { DISPLAY: none } .mform { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 80%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mform FIELDSET { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-BOTTOM: 10px; MARGIN: 0.7em 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid; PADDING-TOP: 10px } .mform FIELDSET.hidden { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mform FIELDSET.felement { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mform FIELDSET.felement { WIDTH: auto } .mform FIELDSET LEGEND { MARGIN-LEFT: 0.5em; FONT-WEIGHT: bold } .mform FIELDSET .advancedbutton { TEXT-ALIGN: right; WIDTH: 100% } .mform DIV.fitem { MIN-HEIGHT: 1.5em; WIDTH: 100%; CLEAR: both } .mform .fitemtitle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px 10px; PADDING-LEFT: 0px; WIDTH: 30%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: left; PADDING-TOP: 0px } .mform .fitemtitle DIV { DISPLAY: inline } DIV.fitem FIELDSET.fgroup LABEL { WIDTH: auto; DISPLAY: inline; FLOAT: none } DIV.fradio LABEL { WIDTH: auto; DISPLAY: inline; FLOAT: none } DIV.fcheckbox LABEL { WIDTH: auto; DISPLAY: inline; FLOAT: none } FIELDSET.fdate_selector LABEL { WIDTH: auto; DISPLAY: inline; FLOAT: none } .mform DIV.felement { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px 10px; PADDING-LEFT: 0px; WIDTH: 60%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: left; PADDING-TOP: 0px } .mform FIELDSET.felement { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px 10px; PADDING-LEFT: 0px; WIDTH: 60%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: left; PADDING-TOP: 0px } .mform DIV.fdescription { MIN-HEIGHT: 1.5em; CLEAR: both } .mform .required.fdescription { TEXT-ALIGN: right } .mform INPUT { WIDTH: auto } .mform SELECT { WIDTH: auto } .mform .ftextarea #id_alltext { WIDTH: 100% } .mform BR { CLEAR: left } .mform DIV.fhtmleditor { PADDING-BOTTOM: 20px; MARGIN: 0px auto 10px; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; FLOAT: none; CLEAR: both; PADDING-TOP: 25px } .mform SPAN.error { COLOR: red } .mform SPAN.required { COLOR: red } .mform DIV.error { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: inherit; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid; PADDING-TOP: 5px } .mform FIELDSET.error { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: inherit; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid; PADDING-TOP: 5px } .mform .fcheckbox INPUT { MARGIN-LEFT: 0px } .mform .fpassword .unmask { DISPLAY: inline } .mform .fpassword .unmask INPUT { MARGIN-LEFT: 5px; MARGIN-RIGHT: 3px } .mform LABEL .req { CURSOR: help } .mform LABEL .adv { CURSOR: help } DIV.mform DIV.fitem DIV.fstatic { BORDER-BOTTOM: #d3d3d3 thin dashed; BORDER-LEFT: #d3d3d3 thin dashed; BORDER-TOP: #d3d3d3 thin dashed; BORDER-RIGHT: #d3d3d3 thin dashed } #admin-register .mform .fsubmit { TEXT-ALIGN: center; PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 20px } DIV.phpinfo .center { TEXT-ALIGN: center } DIV.phpinfo .center TABLE { TEXT-ALIGN: left; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } DIV.phpinfo .center TH { TEXT-ALIGN: center } .backup-form-instances { MARGIN: 0px 20px } .restore-form-instances { MARGIN: 0px 20px } #header-home { } #header { } .headermain { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } H1.headermain { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .headermenu { TEXT-ALIGN: right; FLOAT: right } .navigation LI { DISPLAY: inline } .navigation DIV { DISPLAY: inline } .navigation BUTTON { DISPLAY: inline } .navigation FORM { DISPLAY: inline } .navbar { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0.5em; WIDTH: auto; PADDING-RIGHT: 0.5em; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 3px } .navbar .langmenu { TEXT-ALIGN: right } TABLE.navbar { WIDTH: 100% } .navbar .navbutton { MARGIN-TOP: 3px; FLOAT: left } .navbar .navbutton DIV { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .navbar .navbutton FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .navbar .breadcrumb { MARGIN: 0.2em 0px; FLOAT: left } .breadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; TEXT-INDENT: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .breadcrumb LI { DISPLAY: inline } .navbar .navbutton { FLOAT: right } .navbar .menu { FLOAT: right } #footer .navbar { MARGIN-TOP: 4em } .reportlink { TEXT-ALIGN: right } .navigation { MARGIN-BOTTOM: 4px } .navigation UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigation UL LI FORM { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .navigation UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .navigation UL LI FORM FIELDSET { VERTICAL-ALIGN: middle } .navigation UL LI FORM DIV SELECT { VERTICAL-ALIGN: middle } .navigation OPTGROUP { TEXT-ALIGN: center; PADDING-TOP: 4px } .navigation OPTION { TEXT-ALIGN: left } .navigation OPTGROUP OPTION { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #navmenupopup OPTION { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 1px 2px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } #navmenufooterpopup OPTION { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 1px 2px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } #footer { TEXT-ALIGN: center; MARGIN-TOP: 40px } .homelink { MARGIN: 1em 0px } .homelink A { PADDING-LEFT: 1em; PADDING-RIGHT: 1em } .sitelink { PADDING-TOP: 1em } .performanceinfo { MARGIN: 2em } .performanceinfo SPAN { DISPLAY: block } #footer .validators { MARGIN-TOP: 40px; BORDER-TOP: gray 1px dotted; PADDING-TOP: 5px } #footer .validators UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #footer .validators UL LI { DISPLAY: inline; MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px } .mediaplugin { MARGIN-TOP: 5px; DISPLAY: block; MARGIN-BOTTOM: 5px; CLEAR: both } .mediaplugin_mp3 { MARGIN: 0px 0px 0px 0.5em; DISPLAY: inline; CLEAR: none } .mediaplugin_swf { MARGIN: 0px 0px 0px 0.5em; DISPLAY: inline; CLEAR: none } .mediaplugin_flv { MARGIN: 0px 0px 0px 0.5em; DISPLAY: inline; CLEAR: none } .texrender { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } BODY#admin-index .c0 { VERTICAL-ALIGN: top } BODY#admin-index .c1 { VERTICAL-ALIGN: middle } BODY#admin-blocks TABLE.generaltable TH { WHITE-SPACE: nowrap } BODY#admin-filters TABLE.generaltable TH { WHITE-SPACE: nowrap } BODY#admin-modules TABLE.generaltable TH { WHITE-SPACE: nowrap } BODY#admin-auth TABLE.generaltable TH { WHITE-SPACE: nowrap } BODY#admin-modules .generaltablecell { PADDING-BOTTOM: 2px; PADDING-TOP: 2px } BODY#admin-blocks TABLE.generaltable TH { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-blocks TABLE.generaltable TD.cell { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-filters TABLE.generaltable TH { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-filters TABLE.generaltable TD.cell { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-modules TABLE.generaltable TH { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-modules TABLE.generaltable TD.cell { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-auth TABLE.generaltable TH { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-auth TABLE.generaltable TD.cell { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#admin-blocks TABLE.generaltable TH.c0 { TEXT-ALIGN: left } BODY#admin-blocks TABLE.generaltable TD.c0 { TEXT-ALIGN: left } BODY#admin-filters TABLE.generaltable TH.c0 { TEXT-ALIGN: left } BODY#admin-filters TABLE.generaltable TD.c0 { TEXT-ALIGN: left } BODY#admin-modules TABLE.generaltable TH.c0 { TEXT-ALIGN: left } BODY#admin-modules TABLE.generaltable TD.c0 { TEXT-ALIGN: left } BODY#admin-auth TABLE.generaltable TH.c0 { TEXT-ALIGN: left } BODY#admin-auth TABLE.generaltable TD.c0 { TEXT-ALIGN: left } BODY#admin-modules TABLE.generaltable TD.c0 { WHITE-SPACE: nowrap } #admin-blocks #admin-config .confighelp { PADDING-BOTTOM: 20px; DISPLAY: block } #admin-roles-manage TABLE.generalbox { MARGIN: auto } #admin-stickyblocks .generalbox { TEXT-ALIGN: center } #admin-index .copyrightnotice { TEXT-ALIGN: center; MARGIN: auto } #admin-maintenance .buttons { TEXT-ALIGN: center } #admin-report-unittest-index .exception PRE { PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 8px } #admin-report-unittest-index .unittestsummary { PADDING-BOTTOM: 8px; MARGIN-TOP: 1em; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 8px } #admin-report-security-index #timewarning { TEXT-ALIGN: center } #admin-report-security-index .timewarninghidden { DISPLAY: none } #admin-roles-allowassign .buttons { TEXT-ALIGN: center; MARGIN: 20px } #admin-roles-allowoverride .buttons { TEXT-ALIGN: center; MARGIN: 20px } #admin-roles-manage .buttons { TEXT-ALIGN: center; MARGIN: 20px } #admin-roles-override .buttons { TEXT-ALIGN: center; MARGIN: 20px } #admin-roles-manage .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } #admin-roles-override .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } #admin-roles-manage .selector { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #admin-roles-assign .selector { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #admin-roles-override .selector { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #admin-roles-manage TABLE.roledesc { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #admin-roles-override TABLE.roledesc { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #admin-roles-manage TABLE.rolecap { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #admin-roles-override TABLE.rolecap { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .rolecap .inherit { TEXT-ALIGN: center } .rolecap .allow { TEXT-ALIGN: center } .rolecap .prevent { TEXT-ALIGN: center } .rolecap .prohibit { TEXT-ALIGN: center } #admin-roles-manage .rolecap .cap-desc .cap-name { DISPLAY: block } #admin-roles-override .rolecap .cap-desc .cap-name { DISPLAY: block } #admin-roles-override .c1.cell { PADDING-TOP: 0.75em } #admin-roles-assign .c3.cell { PADDING-TOP: 0.75em } #admin-roles-assign .c1.cell { PADDING-TOP: 0.75em } #admin-roles-override .sefeoverridenotice { TEXT-ALIGN: center } #admin-lang .generalbox { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: center; BORDER-LEFT: 1px solid; MARGIN: auto; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #admin-langimport .generalbox { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: center; BORDER-LEFT: 1px solid; MARGIN: auto; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #admin-langimport .generalbox TABLE { TEXT-ALIGN: center; MARGIN: auto } #admin-mnet-index .generalbox TABLE { WIDTH: 100% } #admin-index .adminerror { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: center; BORDER-LEFT: 1px solid; MARGIN: 20px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #admin-index .adminwarning { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: center; BORDER-LEFT: 1px solid; MARGIN: 20px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #admin-index .adminerror .singlebutton { TEXT-ALIGN: center; MARGIN: 20px } #admin-index .adminwarning .singlebutton { TEXT-ALIGN: center; MARGIN: 20px } #admin-index #layout-table .singlebutton { TEXT-ALIGN: center; MARGIN: 20px } #admin-user-user_bulk #users .fgroup { WHITE-SPACE: nowrap } .plugincompattable CAPTION { TEXT-ALIGN: center; WIDTH: 100%; FONT-SIZE: 130%; FONT-WEIGHT: bold } .plugincheckwrapper TD { BORDER-BOTTOM: #bbbbbb 1px solid; BORDER-LEFT: #bbbbbb 1px solid; BORDER-TOP: #bbbbbb 1px solid; BORDER-RIGHT: #bbbbbb 1px solid } .plugincheckwrapper { WIDTH: 100% } #adminsettings DIV.form-item { MARGIN: 1em 0px 2em; CLEAR: both } #adminsettings .form-label { TEXT-ALIGN: right; WIDTH: 12.5em; DISPLAY: block; FLOAT: left } #adminsettings .form-shortname { DISPLAY: block } #adminsettings .form-setting { TEXT-ALIGN: left; DISPLAY: block; MARGIN-LEFT: 13em } #adminsettings .form-defaultinfo { DISPLAY: inline } #adminsettings .defaultsnext { DISPLAY: inline; MARGIN-RIGHT: 0.5em } #adminsettings .form-description { TEXT-ALIGN: left; MARGIN: 0.5em 0px 0em 13em; DISPLAY: block } #adminsettings FIELDSET { PADDING-BOTTOM: 1em; MARGIN-TOP: 1em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; PADDING-TOP: 1em } #adminsettings LEGEND { DISPLAY: none } #adminsettings FIELDSET.error { PADDING-BOTTOM: 0px; MARGIN: 0.2em 0px 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0.5em } #adminsettings FIELDSET.error LEGEND { DISPLAY: block } #adminsettings .form-multicheckbox LI { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } #adminsettings .form-multicheckbox UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #adminsettings .form-item .pathok { MARGIN-LEFT: 0.5em } #adminsettings .form-item .patherror { MARGIN-LEFT: 0.5em } #adminsettings .form-htmlarea { WIDTH: 640px; DISPLAY: inline } #adminsettings .form-htmlarea .htmlarea { WIDTH: 640px; DISPLAY: block } .environmentbox { MARGIN-TOP: 1em } .form-buttons { MARGIN: 10px 0px 0px 13em } .adminsearchform { PADDING-TOP: 10px } .block_admin_tree .admintree { TEXT-ALIGN: left } .block_admin_tree .admintree .depth1 { PADDING-LEFT: 16px } .block_admin_tree .admintree .depth2 { PADDING-LEFT: 32px } .block_admin_tree .admintree .depth3 { PADDING-LEFT: 48px } .block_admin_tree .admintree .depth4 { PADDING-LEFT: 64px } #admin-lang .translator { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #adminsettings #admin-calendar_weekend TABLE { WIDTH: 100% } #adminsettings #admin-calendar_weekend TABLE TD { TEXT-ALIGN: center } #adminsettings #admin-calendar_weekend TABLE TD LABEL { TEXT-ALIGN: center; WIDTH: 100%; FLOAT: none } #trustedhosts .generaltable { WIDTH: 500px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #trustedhosts .standard { WIDTH: auto } #mnetconfig TABLE { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #admin-report-courseoverview-index .graph { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #course-report-stats-index .graph { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #admin-report-stats-index .graph { TEXT-ALIGN: center; MARGIN-BOTTOM: 1em } #admin-uploaduser TABLE#uuresults { MARGIN-BOTTOM: 2em } #admin-uploaduser TABLE#uupreview { PADDING-LEFT: 3px; PADDING-RIGHT: 3px } #admin-uploaduser TABLE#uuresults TD.cell { PADDING-LEFT: 3px; PADDING-RIGHT: 3px } A.skip-block { POSITION: absolute; FONT-SIZE: 0.85em; TOP: -1000em } A.skip { POSITION: absolute; FONT-SIZE: 0.85em; TOP: -1000em } A.skip-block:focus { POSITION: static; DISPLAY: block } A.skip-block:active { POSITION: static; DISPLAY: block } A.skip:focus { POSITION: static; DISPLAY: block } A.skip:active { POSITION: static; DISPLAY: block } .skip-block-to { DISPLAY: block; HEIGHT: 1px } #maincontent { DISPLAY: block; HEIGHT: 1px } .sideblock { WIDTH: 100%; MARGIN-BOTTOM: 1em } .sideblock .header { BORDER-BOTTOM: medium none; TEXT-ALIGN: left; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } .sideblock H2.header { BORDER-BOTTOM: medium none; TEXT-ALIGN: left; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } .sideblock H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sideblock .header .hide-show-image { MARGIN-TOP: 0.25em; WIDTH: 11px; FLOAT: right; HEIGHT: 11px } .sideblock .header .commands { MARGIN-TOP: 0.3em; HEIGHT: 16px; CLEAR: both } .sideblock .header .commands A { MARGIN: 0px 2px } #left-column .hidden .header { BORDER-BOTTOM: 1px solid } #right-column .hidden .header { BORDER-BOTTOM: 1px solid } #left-column .hidden .content { DISPLAY: none } #right-column .hidden .content { DISPLAY: none } .sideblock .header .hide.icon { MARGIN-RIGHT: 6px } .sideblock .header .edit.icon { MARGIN-RIGHT: 6px } .sideblock .content { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 4px } .sideblock .content H3 { TEXT-ALIGN: left } .sideblock .content H2 { TEXT-ALIGN: left } .sideblock .content H2 { PADDING-BOTTOM: 0px; MARGIN: 1.5em 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sideblock .content .head { MARGIN-TOP: 10px } .sideblock .content HR { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN-TOP: 4px; MARGIN-BOTTOM: 4px; HEIGHT: 1px; BORDER-TOP: 1px solid; BORDER-RIGHT: medium none } .sideblock DIV.column { PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sideblock DIV.c0.column { FLOAT: left } .sideblock DIV.c1.column { DISPLAY: inline } .sideblock .content .c0 IMG.icon { MARGIN: 0px } .sideblock .content .list { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .unlist { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .inline-list { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .sideblock .content .list { WIDTH: 100% } .sideblock .content .list LI { CLEAR: left } .sideblock .content .inline-list LI { DISPLAY: inline } .inline-list LI { DISPLAY: inline } .sideblock .content UL.list LI.listentry { CLEAR: both } .sideblock .content DIV.info { TEXT-ALIGN: center } .sideblock .footer { TEXT-ALIGN: center; MARGIN-BOTTOM: 4px; CLEAR: both } .sideblock IMG.userpicture { WIDTH: 16px; HEIGHT: 16px; MARGIN-RIGHT: 4px } .blockconfigtable { MARGIN-TOP: 0px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .blockconfigtable TD.label { TEXT-ALIGN: right; WIDTH: 50% } .blockconfigtable TD.value { TEXT-ALIGN: left; WIDTH: 50% } .blockconfigtable TD.submit { TEXT-ALIGN: center } .blockconfiginstancecontent .tabs { MARGIN-BOTTOM: 0px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .block_adminblock { WIDTH: 180px } .block_messages .content { TEXT-ALIGN: left; FONT-SIZE: 0.75em; PADDING-TOP: 5px } .block_recent_activitysideblock .h3 { PADDING-TOP: 5px } .block_online_users .listentry DIV.user { FLOAT: left } .block_messages .listentry DIV.user { FLOAT: left } .block_online_users .listentry DIV.message { FLOAT: right } .block_messages .listentry DIV.message { FLOAT: right } .block_course_list .footer { MARGIN-TOP: 5px } #rssfeeds { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #block_rss { TEXT-ALIGN: center } .block_search_forums .invisiblefieldset { DISPLAY: block } .block_tag_youtube .youtube-thumb { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; FLOAT: left; PADDING-TOP: 3px } .block_tag_youtube .yt-video-entry LI { CLEAR: left } .block_tag_flickr .flickr-photos { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .tempblockhandler { MARGIN-BOTTOM: -3px; HEIGHT: 3px; VISIBILITY: hidden } .tempblockhandler .content { MARGIN-BOTTOM: -3px; HEIGHT: 3px; VISIBILITY: hidden } .addbloglink { TEXT-ALIGN: center } .blogpost .audience { TEXT-ALIGN: right } .blogpost .tags { MARGIN-TOP: 15px } #calendar { BORDER-SPACING: 5px; WIDTH: 100%; BORDER-COLLAPSE: separate } #calendar H2 { TEXT-ALIGN: center } #calendar H3 { TEXT-ALIGN: center } #calendar .sideblock H2 { TEXT-ALIGN: left } #calendar .maincalendar { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } #calendar .sidecalendar { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } #calendar .maincalendar { HEIGHT: 100% } #calendar .maincalendar .heightcontainer { POSITION: relative; HEIGHT: 100% } #calendar .maincalendar .bottom { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 5px } #calendar .sidecalendar { WIDTH: 25% } #calendar .maincalendar TABLE.calendarmonth { MARGIN: 0px auto; WIDTH: 98%; BORDER-COLLAPSE: separate } #calendar .maincalendar TABLE.calendarmonth TH { BORDER-BOTTOM: 2px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #calendar .maincalendar TABLE.calendarmonth TD { LINE-HEIGHT: 1.2em; PADDING-LEFT: 4px; HEIGHT: 5em; PADDING-TOP: 4px } #calendar .maincalendar TABLE.calendarmonth TD { WIDTH: 14%; VERTICAL-ALIGN: top } TABLE.minicalendar TD { WIDTH: 14%; VERTICAL-ALIGN: top } TABLE.minicalendar TH { WIDTH: 14%; VERTICAL-ALIGN: top } TABLE.minicalendar TD { TEXT-ALIGN: center } #calendar .maincalendar TABLE.calendarmonth TD TABLE TD { HEIGHT: auto } #calendar DIV.header { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } #calendar .sideblock DIV.header { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #calendar .maincalendar .buttons { FLOAT: right } #calendar .maincalendar .filters TABLE { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; BORDER-SPACING: 2px; WIDTH: 100%; PADDING-RIGHT: 2px; BORDER-COLLAPSE: separate; PADDING-TOP: 2px } #calendar .sidecalendar .filters TABLE { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; BORDER-SPACING: 2px; WIDTH: 100%; PADDING-RIGHT: 2px; BORDER-COLLAPSE: separate; PADDING-TOP: 2px } .block_calendar_month.sideblock .filters TABLE { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; BORDER-SPACING: 2px; WIDTH: 100%; PADDING-RIGHT: 2px; BORDER-COLLAPSE: separate; PADDING-TOP: 2px } #calendar .maincalendar .filters { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 0px } #calendar .sidecalendar .filters { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } #calendar .maincalendar .controls { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; CLEAR: both; PADDING-TOP: 10px } #calendar .maincalendar TABLE.calendarmonth UL.events-new { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #calendar .maincalendar TABLE.calendarmonth UL.events-underway { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #calendar .maincalendar TABLE.calendarmonth UL LI { MARGIN-TOP: 4px } .minicalendarblock { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 0px } TABLE.minicalendar { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 2px; MARGIN: 10px auto; PADDING-LEFT: 2px; BORDER-SPACING: 1px !important; WIDTH: 100%; PADDING-RIGHT: 2px; BORDER-COLLAPSE: separate; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 2px } TABLE.minicalendar TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } #calendar .maincalendar .eventlist { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #calendar .maincalendar .eventlist .topic { BORDER-BOTTOM: #eeeeee 1px solid; BORDER-LEFT: 0px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid; PADDING-TOP: 5px } #calendar .maincalendar .eventlist .event { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-SPACING: 0px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-BOTTOM: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #calendar .maincalendar .eventlist .event .name { FLOAT: left } #calendar .maincalendar .eventlist .event .course { FLOAT: left; CLEAR: left } #calendar .maincalendar .eventlist .event .date { FLOAT: right } #calendar .maincalendar .eventlist .event .description .commands { WIDTH: 100% } #calendar .maincalendar .eventlist .event .description { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } #calendar .maincalendar .eventlist .event .picture { PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 8px } #calendar .maincalendar .eventlist .event .side { WIDTH: 32px } #calendar #selecteventtype TABLE { MARGIN: auto } #calendar .event_global { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #calendar .event_course { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #calendar .event_group { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #calendar .event_user { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .minicalendar .event_global { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .minicalendar .event_course { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .minicalendar .event_group { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .minicalendar .event_user { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #calendar .duration_global { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } #calendar .duration_course { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } #calendar .duration_group { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } #calendar .duration_user { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } .minicalendar .duration_global { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } .minicalendar .duration_course { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } .minicalendar .duration_group { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } .minicalendar .duration_user { BORDER-BOTTOM: 2px solid; BORDER-TOP: 2px solid } #calendar .today { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .minicalendar .today { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #calendar .nottoday { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .minicalendar .today { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .cal_popup_bg { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } .cal_popup_close { MARGIN-RIGHT: 5px } .cal_popup_caption { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 0px solid; PADDING-BOTTOM: 2px; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .calendar-controls .previous { WIDTH: 12%; DISPLAY: block; FLOAT: left } .calendar-controls .next { WIDTH: 12%; DISPLAY: block; FLOAT: left } .calendar-controls .current { WIDTH: 12%; DISPLAY: block; FLOAT: left } .calendar-controls .previous { TEXT-ALIGN: left } .calendar-controls .current { TEXT-ALIGN: center; WIDTH: 76% } .calendar-controls .next { TEXT-ALIGN: right } #calendar .maincalendar .calendar-controls .previous { WIDTH: 30% } #calendar .maincalendar .calendar-controls .next { WIDTH: 30% } #calendar .maincalendar .calendar-controls .current { WIDTH: 39.95% } #calendar .indent { PADDING-LEFT: 20px } #calendar TD.sidecalendar { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } #calendar TD.sidecalendar .sideblock { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; MARGIN-BOTTOM: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #calendar TD.sidecalendar .minicalendartop { PADDING-TOP: 10px } .sideblock .content H3.eventskey { MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 0.5em } .activitydate { TEXT-ALIGN: center } .activityhead { TEXT-ALIGN: center } #course-view .section TD { VERTICAL-ALIGN: top } #course-view .section TD.content { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 5px } #course-view .section TD.side { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 5px } #course-view .section TD.left { TEXT-ALIGN: center; WIDTH: 1.5em; BORDER-RIGHT: 0px } #course-view .section TD.right { TEXT-ALIGN: center; BORDER-LEFT: 0px; WIDTH: 1.5em } #course-view .current .side { } #course-view .section .spacer { HEIGHT: 0.5em } #course-view .section .weekdates { } #course-view UL.section { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #site-index UL.section { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .section_add_menus { TEXT-ALIGN: right } .section_add_menus .horizontal DIV { DISPLAY: inline } #course-view UL.weekscss { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .weekscss-format { MIN-WIDTH: 763px } .weekscss-format .block_adminblock SELECT { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .weekscss-format .block_calendar_month .minicalendar { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .weekscss-format .block_calendar_month .minicalendar TH { PADDING-BOTTOM: 0.1em; PADDING-LEFT: 1px; PADDING-RIGHT: 0px; PADDING-TOP: 0.1em } .weekscss-format .block_calendar_month .minicalendar TD { PADDING-BOTTOM: 0.1em; PADDING-LEFT: 1px; PADDING-RIGHT: 0px; PADDING-TOP: 0.1em } .weekscss-format #middle-column { MARGIN: 0px 12.5em } .weekscss-format #left-column { WIDTH: 11.5em } .weekscss-format #right-column { WIDTH: 11.5em } .weekscss-format #left-column { FLOAT: left } .weekscss-format #right-column { FLOAT: right } .weekscss LI.section { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; MARGIN-BOTTOM: 0.5em; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .weekscss .content { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .weekscss .side { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .weekscss .content { MARGIN: 0px 1.7em } .weekscss .right { TEXT-ALIGN: center; WIDTH: 1.6em; FLOAT: right } .section .activity IMG.activityicon { WIDTH: 16px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .section IMG.movetarget { WIDTH: 80px; HEIGHT: 16px } BODY#course-view .unread { MARGIN-LEFT: 3em } BODY#course-view .drag.sideblock .header { CURSOR: move } BODY#course-enrol .generalbox { MARGIN-TOP: 20px } BODY#course-enrol .coursebox { MARGIN-TOP: 20px } BODY#course-user .graph { TEXT-ALIGN: center } BODY#course-user .section { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } BODY#course-user .content { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } BODY#course-user .section { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 20px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 10px } BODY#course-user .section H2 { MARGIN-TOP: 0px } .headingblock { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 5px } H2.headingblock { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 5px } #site-index .subscribelink { TEXT-ALIGN: right } #course-view .subscribelink { TEXT-ALIGN: right } BODY#site-index .headingblock { MARGIN-BOTTOM: 9px } BODY#course-view .headingblock { MARGIN-BOTTOM: 9px } BODY#course-category .courseboxes { PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 20px } BODY#course-index .courseboxes { PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 20px } BODY#course-category .rolelink { TEXT-ALIGN: right; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } BODY#course-category .addcategory { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } BODY#course-index .buttons .singlebutton { DISPLAY: inline } BODY#course-category .buttons .singlebutton { DISPLAY: inline } BODY#course-index .buttons { TEXT-ALIGN: center; MARGIN-BOTTOM: 15px } BODY#course-category .buttons { TEXT-ALIGN: center; MARGIN-BOTTOM: 15px } BODY#course-index #middle-column .editcourse { MARGIN: 20px auto } BODY#course-index #middle-column .editcourse TH { PADDING-LEFT: 10px; PADDING-RIGHT: 10px } BODY#course-index #middle-column .editcourse TD { PADDING-LEFT: 10px; PADDING-RIGHT: 10px } BODY#course-index #middle-column .editcourse .count { TEXT-ALIGN: right } BODY#course-index .singlebutton { TEXT-ALIGN: center } BODY#course-index .addcategory { TEXT-ALIGN: center } BODY#course-info .icons.generalbox { TEXT-ALIGN: center } BODY#course-info .info.generalbox { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .coursebox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 100%; MARGIN-BOTTOM: 15px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .coursebox .summary { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 48%; PADDING-RIGHT: 5px; FLOAT: right; PADDING-TOP: 5px } .coursebox .info { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 48%; PADDING-RIGHT: 5px; FLOAT: left; PADDING-TOP: 5px } #my-index .coursebox .info { FLOAT: none } #my-index .name { MARGIN-LEFT: 5px } #course-pending .pendingcourserequests { MARGIN-BOTTOM: 1em } #course-pending .pendingcourserequests .singlebutton { DISPLAY: inline } #course-pending .pendingcourserequests .cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 0px } #course-pending .pendingcourserequests .c6.cell { WHITE-SPACE: nowrap } #course-pending .singlebutton { TEXT-ALIGN: center } .categorylist { WIDTH: 90%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .categorylist .image.category { WIDTH: 20px } .categorylist .number.category { TEXT-ALIGN: right } .categorylist .indentation.category { WIDTH: 1px } .categoryboxcontent { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .categorypicker { TEXT-ALIGN: center; PADDING-BOTTOM: 10px } #coursesearch { TEXT-ALIGN: center; MARGIN-TOP: 1em } #coursesearch2 { TEXT-ALIGN: center; MARGIN-TOP: 1em } .addcoursebutton { TEXT-ALIGN: center } .coursebox .cost { PADDING-TOP: 20px } .coursebox UL.teachers LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #course-category #renameform { TEXT-ALIGN: center } #course-category #themeform { TEXT-ALIGN: center } #course-category .singlebutton { TEXT-ALIGN: center } #course-category #coursesearch { TEXT-ALIGN: center } #course-report #content { PADDING-BOTTOM: 15px; PADDING-TOP: 15px } #course-report P { TEXT-ALIGN: center } #course-report .logselectform { TEXT-ALIGN: center; MARGIN: 10px auto } #course-report .participationselectform { TEXT-ALIGN: center; MARGIN: 10px auto } #course-report-log-index .logselectform { TEXT-ALIGN: center; MARGIN: 10px auto } #course-report-participation-index .participationselectform { TEXT-ALIGN: center; MARGIN: 10px auto } #course-report .participationselectform LABEL { MARGIN-LEFT: 15px; MARGIN-RIGHT: 5px } #course-report-participation-index .participationselectform LABEL { MARGIN-LEFT: 15px; MARGIN-RIGHT: 5px } #course-report-log-index .info { TEXT-ALIGN: center; MARGIN: 10px } #course-report-log-indexlive .info { TEXT-ALIGN: center; MARGIN: 10px } .course-report-outline TD.numviews { TEXT-ALIGN: right } .course-report-outline DIV.loginfo { TEXT-ALIGN: center; MARGIN: 1em } #content .coursebox .summary .category { TEXT-ALIGN: right } #course-editsection .singlebutton { TEXT-ALIGN: center } .jumpmenu { TEXT-ALIGN: center } BODY#group-index #groupeditform { TEXT-ALIGN: center } #add { TEXT-ALIGN: center } #remove { TEXT-ALIGN: center } BODY#doc-contents H1 { MARGIN: 1em 0px 0px } BODY#doc-contents UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .grade-edit-scale .buttons { TEXT-ALIGN: center; MARGIN: 20px } .grade-edit-scale .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } .grade-edit-outcome .buttons { TEXT-ALIGN: center; MARGIN: 20px } .grade-edit-outcome .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } DIV.allcoursegrades { TEXT-ALIGN: right; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .importoutcomenofile .singlebutton { TEXT-ALIGN: center; MARGIN-TOP: 5px } .grade-edit-tree .gradetreebox { PADDING-BOTTOM: 15px; MARGIN-TOP: 10px; WIDTH: 70%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .grade-edit-tree .buttons { TEXT-ALIGN: center; MARGIN: 20px } .grade-edit-tree .idnumber { MARGIN-LEFT: 15px } .grade-edit-tree .buttons .singlebutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline; PADDING-TOP: 5px } .grade-edit-tree .movetarget { POSITION: relative; WIDTH: 80px; HEIGHT: 16px } .grade-edit-tree UL#grade_tree { WIDTH: auto } .grade-edit-tree UL#grade_tree LI { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } .grade-edit-tree UL#grade_tree LI.category { MARGIN-BOTTOM: 6px } .grade-edit-tree .iconsmall { MARGIN-LEFT: 4px } #grade-report-toggles { TEXT-ALIGN: center } .gradeexportlink { TEXT-ALIGN: center; PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; PADDING-TOP: 2em } #grade-aggregation-help DT { MARGIN-TOP: 15px } #grade-aggregation-help DD.example { MARGIN-TOP: 7px } #grade-aggregation-help CODE { MARGIN-TOP: 7px; DISPLAY: block } .loginbox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; MARGIN-TOP: 15px; WIDTH: 50%; MARGIN-BOTTOM: 15px; MARGIN-LEFT: 25%; OVERFLOW: hidden; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .loginbox FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .twocolumns.loginbox { WIDTH: 90%; MARGIN-LEFT: 5% } .loginbox H2 { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; MARGIN: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .loginbox .subcontent { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; MARGIN: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .loginbox .loginpanel .subcontent { TEXT-ALIGN: center } .loginbox .loginpanel .desc { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .loginbox .signuppanel .subcontent { TEXT-ALIGN: left } .loginbox .loginsub { MARGIN-LEFT: 0%; MARGIN-RIGHT: 0% } .loginbox .guestsub { MARGIN-BOTTOM: 5px; MARGIN-LEFT: 12%; BORDER-TOP: 1px solid; MARGIN-RIGHT: 12% } .loginbox .forgotsub { MARGIN-BOTTOM: 5px; MARGIN-LEFT: 12%; BORDER-TOP: 1px solid; MARGIN-RIGHT: 12% } .loginbox .loginform { TEXT-ALIGN: left; MARGIN-TOP: 1em } .loginbox .loginform .form-label { TEXT-ALIGN: right; WIDTH: 40%; FLOAT: left } .loginbox .loginform .form-input { WIDTH: 59%; FLOAT: right } .loginbox .loginform .form-input INPUT { WIDTH: 6em } .loginbox .signupform { TEXT-ALIGN: center; MARGIN-TOP: 1em } .twocolumns.loginbox .loginpanel { PADDING-BOTTOM: 2000px; WIDTH: 49.5%; MARGIN-BOTTOM: -2000px; FLOAT: left; BORDER-RIGHT: 1px solid } .twocolumns.loginbox .signuppanel { PADDING-BOTTOM: 2000px; WIDTH: 50%; MARGIN-BOTTOM: -2000px; FLOAT: right } #message-user .userpicture { WIDTH: 100px; HEIGHT: 100px } #message-history .userpicture { WIDTH: 100px; HEIGHT: 100px } .message-discussion-noframes #userinfo .userpicture { FLOAT: left } .message-discussion-noframes #userinfo .name H1 { MARGIN: 0px } .message-discussion-noframes #userinfo .name { TEXT-ALIGN: center; MARGIN-LEFT: 60px } .message-discussion-noframes #userinfo .commands { TEXT-ALIGN: left; MARGIN-LEFT: 60px } .message-discussion-noframes #userinfo .commands UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .message-discussion-noframes #userinfo .commands UL LI { PADDING-RIGHT: 16px; DISPLAY: inline } .message-discussion-noframes #send { CLEAR: both; PADDING-TOP: 10px } .message-discussion-noframes #send H1 { MARGIN: 0px } .message-discussion-noframes #messages { PADDING-TOP: 10px } .message-discussion-noframes #messages UL.messagelist { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .message-discussion-noframes #send H1 { MARGIN: 0px } .message .noframesjslink { MARGIN-TOP: 20px } .message .link { VERTICAL-ALIGN: middle } TABLE.message .searchresults TD { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; BORDER-SPACING: 0px; PADDING-RIGHT: 5px; BORDER-COLLAPSE: collapse; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 5px } .message .summary .link { TEXT-ALIGN: right } .message .heading { TEXT-ALIGN: center } .message .note { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #message-user .commands SPAN { MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px } BODY#message-messages { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } BODY#message-send .notifysuccess { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } BODY#message-send TD.fixeditor { TEXT-ALIGN: center } .notepost { BACKGROUND-COLOR: #eee; MARGIN-BOTTOM: 1em } .sitenotepost { } .coursenotepost { } .draftnotepost { } .ownnotepost .info { } .notepost .header { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; PADDING-TOP: 5px } .notepost .user { FONT-WEIGHT: bolder } .notepost .userpicture { FLOAT: left; MARGIN-RIGHT: 5px } .notepost .info { FONT-SIZE: smaller } .notepost .content { CLEAR: both } .notepost .footer { CLEAR: both } BODY.notes .generalbox { WIDTH: 90%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } BODY.notes .notesgroup { MARGIN-LEFT: 20px } .my .coursebox .overview .info { MARGIN-LEFT: 20px } .my .coursebox .overview { MARGIN-BOTTOM: 10px } .questionbank H2 { MARGIN-TOP: 0px } .questioncategories H3 { MARGIN-TOP: 0px } .que { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: left; BORDER-LEFT: 1px solid; MARGIN: 0px auto 1.8em; CLEAR: both; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .que .info { MARGIN: 0.5em 0px 0.5em 1.2em; WIDTH: 8%; FLOAT: left } .que .content { MARGIN: 0.5em 1.2em 0.5em 0px; WIDTH: 85%; FLOAT: left } .description.que .info { MARGIN: 0.5em 0px 0.5em 0.2em; WIDTH: 1em } .description.que .content { WIDTH: auto; MARGIN-BOTTOM: 0.5em; FLOAT: none; MARGIN-LEFT: 1.2em } .description.que .generalfeedback { WIDTH: auto; MARGIN-BOTTOM: 0.5em; FLOAT: none; MARGIN-LEFT: 1.2em } .description.que .qtext { MARGIN-BOTTOM: 0px } .que .qtext { MARGIN-BOTTOM: 1.5em } .que .ablock { MARGIN: 0.7em 0px 0.3em } .que .prompt { WIDTH: 15%; FLOAT: left; HEIGHT: 2em; PADDING-TOP: 0.3em } .que .control { WIDTH: 5% } .que .answer { WIDTH: 83%; MARGIN-BOTTOM: 0.5em; FLOAT: left } .que .submit { POSITION: relative; FLOAT: left; CLEAR: both } * HTML .que .submit { FLOAT: none } .multianswer .submit { MARGIN-TOP: 1em } .que .c0 { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 0.3em } .que .c1 { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 0.3em } .que .feedback { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0.5em; CLEAR: both; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; PADDING-TOP: 0px } .multichoice TD.feedback { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; WIDTH: auto; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: top; BORDER-LEFT-STYLE: none; PADDING-TOP: 0.3em } .essay .feedback { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none } .multichoice .text { WIDTH: auto } .calculated .answer { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; WIDTH: auto; PADDING-RIGHT: 0.3em; PADDING-TOP: 0.3em } .numerical .answer { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; WIDTH: auto; PADDING-RIGHT: 0.3em; PADDING-TOP: 0.3em } .shortanswer .answer { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; WIDTH: auto; PADDING-RIGHT: 0.3em; PADDING-TOP: 0.3em } .truefalse .answer SPAN { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; WIDTH: 100%; PADDING-RIGHT: 0.3em; FLOAT: left; CLEAR: left; PADDING-TOP: 0.3em } .que .grading { MARGIN-TOP: 0.5em } .que .comment { MARGIN-TOP: 0.5em } .que .commentlink { MARGIN-TOP: 0.5em } .que .generalfeedback { MARGIN-TOP: 0.5em } .que .history { MARGIN-TOP: 0.5em } .que .grade { MARGIN-TOP: 0.5em } .importerror { BORDER-BOTTOM: #555 1px solid; MARGIN-TOP: 10px } .logtable { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .logtable TD { PADDING-LEFT: 10px; PADDING-RIGHT: 10px } .logtable TH { PADDING-LEFT: 10px; PADDING-RIGHT: 10px } .logtable TH { TEXT-ALIGN: left } #course-user .info { TEXT-ALIGN: center; MARGIN: 10px } .tabtree { POSITION: relative } .tabrow0 { TEXT-ALIGN: center; PADDING-BOTTOM: 1.75em; LINE-HEIGHT: 1.8em; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 84%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .tabrow0 LI { PADDING-BOTTOM: 0px; MARGIN: 0px -4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .tabrow0 A SPAN { PADDING-BOTTOM: 0.35em; PADDING-LEFT: 0px; PADDING-RIGHT: 14px; BACKGROUND: url(pix/tab/right.gif) no-repeat right top; PADDING-TOP: 10px } .tabrow1 LI A SPAN { BACKGROUND: none transparent scroll repeat 0% 0% } .tabrow0 A { PADDING-BOTTOM: 0.35em; MARGIN: 0px -1px 0px 0px; PADDING-LEFT: 13px; PADDING-RIGHT: 0px; BACKGROUND: url(pix/tab/left.gif) no-repeat left top; TEXT-DECORATION: none; PADDING-TOP: 10px } .tabrow0 A:hover { BACKGROUND-IMAGE: url(pix/tab/left_hover.gif) } .tabrow0 .here A:hover { BACKGROUND-IMAGE: url(pix/tab/left.gif) } .tabrow0 A:hover SPAN { BACKGROUND-IMAGE: url(pix/tab/right_hover.gif) } .tabrow0 .here A:hover SPAN { BACKGROUND-IMAGE: url(pix/tab/right.gif) } .tabrow0 .here A { COLOR: #444 } .tabrow0 .here A:link { Z-INDEX: 102; POSITION: relative } .tabrow0 .here A:visited { Z-INDEX: 102; POSITION: relative } .tabrow0 .here A.nolink { Z-INDEX: 102; POSITION: relative } .tabrow0 .empty { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; OVERFLOW: hidden; PADDING-TOP: 0px } .tabrow0 DIV { POSITION: absolute; PADDING-BOTTOM: 0.25em; LINE-HEIGHT: normal; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: url(pix/tab/tabrow1.gif) repeat-x left center; FONT-SIZE: 90%; BORDER-TOP: #aaa 1px solid; TOP: 1.95em; LIST-STYLE-IMAGE: none; PADDING-TOP: 0.25em; LEFT: 0px } .tabrow0 UL { POSITION: absolute; PADDING-BOTTOM: 0.25em; LINE-HEIGHT: normal; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: url(pix/tab/tabrow1.gif) repeat-x left center; FONT-SIZE: 90%; BORDER-TOP: #aaa 1px solid; TOP: 1.95em; LIST-STYLE-IMAGE: none; PADDING-TOP: 0.25em; LEFT: 0px } .tabrow0 UL LI { BACKGROUND-IMAGE: none; MARGIN-TOP: 1px; DISPLAY: inline } .tabrow0 UL A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; COLOR: #00c; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .tabrow0 UL A SPAN { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tabrow0 UL .last SPAN { BACKGROUND-IMAGE: none !important } .tabrow0 UL LI A:hover { BACKGROUND-IMAGE: none !important } .tabrow0 UL LI A:hover SPAN { BACKGROUND-IMAGE: none !important } .tabrow0 UL .here A:hover { BACKGROUND-IMAGE: none !important } .tabrow0 UL .here A:hover SPAN { BACKGROUND-IMAGE: none !important } .tabrow0 UL DIV { DISPLAY: none } UL.tabrow1 LI A { COLOR: #00c; FONT-SIZE: 110% } UL.tabrow1 LI A:link { COLOR: #00c; FONT-SIZE: 110% } UL.tabrow1 LI A:visited { COLOR: #00c; FONT-SIZE: 110% } UL.tabrow1 LI.selected.here A { COLOR: #444 } H2.tag-heading { TEXT-ALIGN: center; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 95%; PADDING-RIGHT: 5px; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; PADDING-TOP: 5px } DIV#tag-description { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 95%; PADDING-RIGHT: 5px; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; PADDING-TOP: 5px } DIV#tag-blogs { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 95%; PADDING-RIGHT: 5px; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; PADDING-TOP: 5px } BODY#tag-index .moreblogs { TEXT-ALIGN: center } DIV#tag-management-box { TEXT-ALIGN: center; LINE-HEIGHT: 20px; DISPLAY: block; MARGIN-BOTTOM: 10px; FONT-SIZE: 12px } DIV#tag-user-table { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; DISPLAY: block; MARGIN-LEFT: auto; CLEAR: both; MARGIN-RIGHT: auto; PADDING-TOP: 3px } BODY.tag .managelink { TEXT-ALIGN: right; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } DIV#tag-user-table:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; OVERFLOW: hidden; CONTENT: "." } DIV.user-box { TEXT-ALIGN: center; MARGIN: 8px; WIDTH: 115px; DISPLAY: block; FLOAT: left; HEIGHT: 160px; CLEAR: none } IMG.user-image { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 100px; HEIGHT: 100px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV#small-tag-cloud-box { MARGIN: 0px auto; WIDTH: 300px } DIV#big-tag-cloud-box { MARGIN: 0px auto; WIDTH: 600px; DISPLAY: block; FLOAT: none } UL#tag-cloud-list { PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; LIST-STYLE-IMAGE: none; PADDING-TOP: 5px } UL#tag-cloud-list LI { MARGIN: 0px; DISPLAY: inline } DIV#tag-search-box { TEXT-ALIGN: center; MARGIN: 10px auto } DIV#tag-search-results-container { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tag-search-results { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 15px 20% 0px; PADDING-LEFT: 0px; WIDTH: 60%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL#tag-search-results LI { TEXT-ALIGN: left; LINE-HEIGHT: 20px; PADDING-LEFT: 1%; WIDTH: 30%; PADDING-RIGHT: 1%; FLOAT: left } DIV#tags-management-links { TEXT-ALIGN: right; DISPLAY: block; FONT-SIZE: 12px } SPAN.flagged-tag { COLOR: #ff0000 } SPAN.flagged-tag A { COLOR: #ff0000 } TABLE#tag-management-list { TEXT-ALIGN: left; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } TABLE#tag-management-list TR TD { PADDING-LEFT: 4px; PADDING-RIGHT: 4px } .tag-management-form { TEXT-ALIGN: center } #relatedtags-autocomplete-container { MIN-HEIGHT: 4.6em; WIDTH: 100%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #relatedtags-autocomplete { POSITION: relative; WIDTH: 60%; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #relatedtags-autocomplete .yui-ac-content { Z-INDEX: 9050; BORDER-BOTTOM: #404040 1px solid; POSITION: absolute; BORDER-LEFT: #404040 1px solid; WIDTH: 420px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #404040 1px solid; BORDER-RIGHT: #404040 1px solid; LEFT: 20% } #relatedtags-autocomplete .ysearchquery { Z-INDEX: 10; POSITION: absolute; COLOR: #808080; RIGHT: 10px } #relatedtags-autocomplete .yui-ac-shadow { Z-INDEX: 9049; POSITION: absolute; MARGIN: 0.3em; WIDTH: 100%; BACKGROUND: #a0a0a0 } #relatedtags-autocomplete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #relatedtags-autocomplete LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; CURSOR: default; PADDING-TOP: 0px } #relatedtags-autocomplete LI.yui-ac-highlight { BACKGROUND: #ffffcc } .userinfobox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-COLLAPSE: separate; MARGIN-BOTTOM: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .userinfobox .left { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100px; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } .userinfobox .side { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100px; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } .userinfobox .userpicture { WIDTH: 100px; HEIGHT: 100px } .userinfobox .content { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } .userinfobox .links { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 100px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: bottom; PADDING-TOP: 5px } .userinfobox .list TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .userinfobox .username { PADDING-BOTTOM: 20px } .userinfobox TD.label { TEXT-ALIGN: right; WHITE-SPACE: nowrap; VERTICAL-ALIGN: top } TABLE.userinfobox { WIDTH: 80%; MARGIN-LEFT: 10%; MARGIN-RIGHT: 10% } TABLE.groupinfobox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 60%; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20%; BORDER-TOP: 1px solid; MARGIN-RIGHT: 20%; BORDER-RIGHT: 1px solid } .groupinfobox .left { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100px; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } BODY#user-index H2 { TEXT-ALIGN: center } #user-view .buttons { TEXT-ALIGN: center } #user-index .buttons { TEXT-ALIGN: center } #user-view .buttons FORM { DISPLAY: inline } #user-view .buttons FORM DIV { DISPLAY: inline } BODY#user-index #longtimenosee { TEXT-ALIGN: center } BODY#user-index #showall { TEXT-ALIGN: center } BODY#user-index #showall { MARGIN: 10px 0px } BODY#user-index TABLE#participants { MARGIN: auto; WIDTH: 80% } BODY#tag-manage TABLE#tag-management-list { MARGIN: auto; WIDTH: 80% } BODY#tag-manage TABLE#tag-management-list TD { TEXT-ALIGN: left; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#tag-manage TABLE#tag-management-list TH { TEXT-ALIGN: left; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#user-index TABLE#participants TD { TEXT-ALIGN: left; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#user-index TABLE#participants TH { TEXT-ALIGN: left; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: middle; PADDING-TOP: 4px } BODY#user-index TABLE.controls { WIDTH: 100% } BODY#user-index TABLE.controls TR { VERTICAL-ALIGN: top } BODY#user-index TABLE.controls TD.right { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } BODY#user-index TABLE.controls TD.left { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } BODY#user-index TABLE.controls .right { TEXT-ALIGN: right } BODY#course-participation H2 { TEXT-ALIGN: center } BODY#course-participation #showall { TEXT-ALIGN: center; MARGIN: 10px 0px } BODY#user-index .rolesform { TEXT-ALIGN: center } #user-policy .noticebox { TEXT-ALIGN: center; WIDTH: 80%; MARGIN-BOTTOM: 10px; HEIGHT: 250px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #user-policy #policyframe { WIDTH: 100%; HEIGHT: 100% } .iplookup #map { MARGIN: auto } .iplookup #note { TEXT-ALIGN: center } .userpicture { WIDTH: 35px; HEIGHT: 35px; VERTICAL-ALIGN: top } .picture user { WIDTH: 35px; HEIGHT: 35px; VERTICAL-ALIGN: top } .picture teacher { WIDTH: 35px; HEIGHT: 35px; VERTICAL-ALIGN: top } .modform { TEXT-ALIGN: center } #wordcount { TEXT-ALIGN: right } .nextchatsession { TEXT-ALIGN: center } #mod-chat-gui_header_js-jsupdate { MARGIN: 10px } #mod-chat-gui_header_js-jsupdate .chat-event { PADDING-BOTTOM: 0px; MARGIN-TOP: 7px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #mod-chat-gui_header_js-jsupdate .chat-message { PADDING-BOTTOM: 0px; MARGIN-TOP: 7px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #mod-chat-view #chatcurrentusers .chatuserdetails { VERTICAL-ALIGN: middle } #mod-chat-view #enterlink { TEXT-ALIGN: center; WIDTH: 50%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .chat-event .picture { WIDTH: 40px; VERTICAL-ALIGN: top } .chat-message .picture { WIDTH: 40px; VERTICAL-ALIGN: top } .chat-event .text { TEXT-ALIGN: left } .chat-message .text { TEXT-ALIGN: left } #mod-chat-gui_basic #participants UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #mod-chat-gui_basic #participants UL LI { DISPLAY: inline; MARGIN-RIGHT: 10px } #mod-chat-gui_basic #participants UL LI .userinfo { DISPLAY: inline } #mod-chat-gui_basic #messages DL { PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #mod-chat-gui_basic #messages DD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; MARGIN-RIGHT: 5px; PADDING-TOP: 0px } #mod-chat-gui_basic #messages DT { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; MARGIN-RIGHT: 5px; PADDING-TOP: 0px } .button { TEXT-ALIGN: center } .attemptcell { WIDTH: 5px; WHITE-SPACE: nowrap } .anonymous { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .names { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .downloadreport { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px } .choiceresponse { WIDTH: 100% } .choiceresponse .picture { WIDTH: 10px; WHITE-SPACE: nowrap } .choiceresponse .fullname { WIDTH: 100%; WHITE-SPACE: nowrap } .data.results { WHITE-SPACE: nowrap; VERTICAL-ALIGN: top } .fieldadd { TEXT-ALIGN: center } .sortdefault { TEXT-ALIGN: center } .defaulttemplate { TEXT-ALIGN: center } .datapreferences { TEXT-ALIGN: center } TABLE.presets { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #mod-forum-view .forummode { TEXT-ALIGN: center } .forumheaderlist { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-COLLAPSE: separate; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .forumpost { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-COLLAPSE: separate; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .forumpost { MARGIN-TOP: 15px } .forumpost .topic { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 0px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid; PADDING-TOP: 4px } .forumpost .commands { TEXT-ALIGN: right; CLEAR: both; PADDING-TOP: 0.5em } .forumpost .ratings { TEXT-ALIGN: right; PADDING-TOP: 1em } .forumpost .attachments { TEXT-ALIGN: right; PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 7px } .forumpost .content { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .forumpost .footer { TEXT-ALIGN: right; PADDING-TOP: 0.5em } .forumpost .link { TEXT-ALIGN: right; PADDING-TOP: 0.5em } .forumpost .left { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: 35px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } .mod-forum .indent { MARGIN-LEFT: 30px } BODY#user-view .forumpost { WIDTH: 100% } .course .forumpost { WIDTH: 100% } BODY#mod-forum-search .c0 { TEXT-ALIGN: right } BODY#mod-forum-search .introcontent { PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; PADDING-TOP: 15px } .forumolddiscuss { TEXT-ALIGN: right } .forumheaderlist { WIDTH: 100% } .forumheaderlist TD { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 0px solid } .forumheaderlist .replies { TEXT-ALIGN: center; WHITE-SPACE: nowrap } .forumheaderlist .picture { WIDTH: 35px } .forumheaderlist .discussion .starter { VERTICAL-ALIGN: middle } .forumheaderlist .lastpost { TEXT-ALIGN: right; WHITE-SPACE: nowrap } .forumheaderlist .discussion .author { WHITE-SPACE: nowrap } .forumolddiscuss { TEXT-ALIGN: right } .forumaddnew { TEXT-ALIGN: center } .forumnodiscuss { TEXT-ALIGN: center } .noticeboxcontent { TEXT-ALIGN: center } #mod-forum-view .forumaddnew { MARGIN-BOTTOM: 20px } #mod-forum-view .forumcontrol .groupmenu { TEXT-ALIGN: left; WHITE-SPACE: nowrap; FLOAT: left } #mod-forum-view .groupmenu { TEXT-ALIGN: left; WHITE-SPACE: nowrap; FLOAT: left } #mod-forum-view .forumcontrol .subscription { TEXT-ALIGN: right; WHITE-SPACE: nowrap; FLOAT: right } #mod-forum-view .subscription { TEXT-ALIGN: right; WHITE-SPACE: nowrap; FLOAT: right } #mod-forum-index .subscription { TEXT-ALIGN: right; WHITE-SPACE: nowrap; FLOAT: right } #mod-forum-view .unread { PADDING-LEFT: 3px; PADDING-RIGHT: 3px } #mod-forum-discuss .unread.forumpost .content { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } #mod-forum-discuss .ratingsubmit { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #mod-forum-index .unread IMG { MARGIN-LEFT: 5px } #mod-forum-view .unread IMG { MARGIN-LEFT: 5px } #mod-forum-discuss .discussioncontrols TD { TEXT-ALIGN: center; WIDTH: 33% } #email .unsubscribelink { BORDER-BOTTOM: 0px solid; TEXT-ALIGN: center; BORDER-LEFT: 0px solid; MARGIN-TOP: 20px; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } #mod-forum-view .subscription { MARGIN: 5px 0px } .glossarypost .commands { WIDTH: 200px; WHITE-SPACE: nowrap } #mod-glossary-comments .glossarypost { MARGIN-TOP: 15px } #mod-glossary-comment .glossarypost { MARGIN-TOP: 15px } .entryboxheader { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .entrybox { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 100%; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .entrybox HR { BORDER-LEFT: medium none; BORDER-RIGHT: medium none } .glossarypost { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: left; BORDER-LEFT: 1px solid; WIDTH: 95%; BORDER-COLLAPSE: separate; MARGIN-BOTTOM: 5px; MARGIN-LEFT: auto; BORDER-TOP: 1px solid; MARGIN-RIGHT: auto; BORDER-RIGHT: 1px solid } .entrylist { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px } .entrylowersection { PADDING-TOP: 10px } .entrylowersection TABLE { WIDTH: 100% } .entrylowersection .aliases { TEXT-ALIGN: center } .entrylowersection .icons { TEXT-ALIGN: right; PADDING-RIGHT: 5px } .entrylowersection .ratings { TEXT-ALIGN: right; PADDING-RIGHT: 5px } .entrylowersection .ratings { PADDING-BOTTOM: 2px } .glossarycategoryheader { WIDTH: 95%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .glossaryformatheader { WIDTH: 90% } .glossarypost .entry { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .glossarypost .picture { WIDTH: 35px } .glossarycomment { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: left; BORDER-LEFT: 1px solid; BORDER-COLLAPSE: separate; MARGIN-BOTTOM: 5px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .glossarycomment .entry { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .glossarycomment .picture { WIDTH: 35px } .glossarycomment .icons { TEXT-ALIGN: right } .glossarydisplay { TEXT-ALIGN: center; WIDTH: 90%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .glossarydisplay .tabs { WIDTH: 100% } .glossarydisplay .separator { WIDTH: 4px } .glossarydisplay .tabs .selected { } .glossarydisplay .tabs .inactive { } .glossarydisplay .tabs .general { } .glossaryimportexport { TEXT-ALIGN: center; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .glossarypopup { WIDTH: 95% } .glossaryapproval { WIDTH: 100% } .mod-glossary .glossarydisplay .tabs { MARGIN-BOTTOM: 0px } .mod-glossary .glossarydisplay .tabs .side { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .glossaryexplain { TEXT-ALIGN: center } .glossaryaddentry { TEXT-ALIGN: center } .mod-glossary .tabrow0 { PADDING-BOTTOM: 5px } #mod-glossary-view .glossarycontrol { TEXT-ALIGN: right; MARGIN: 5px 0px; WHITE-SPACE: nowrap; FLOAT: right } #mod-journal-view .lastedit { TEXT-ALIGN: center; MARGIN: 5px } #mod-journal-view .editend { TEXT-ALIGN: center; MARGIN: 5px } #mod-journal-view .feedbackbox { WIDTH: 75%; BORDER-COLLAPSE: separate } #mod-journal-view .entrycontent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } #mod-journal-view .picture { WIDTH: 35px } #mod-journal-view .grade { TEXT-ALIGN: right } #mod-journal-view .info { TEXT-ALIGN: right; MARGIN-BOTTOM: 5px } #mod-lesson-lesson #page .addform { TEXT-ALIGN: center } #mod-lesson-edit #page .label { FONT-WEIGHT: bold } #mod-lesson-edit #page .labelcorrect { FONT-WEIGHT: bold; TEXT-DECORATION: underline } .lessonmediafilecontrol { TEXT-ALIGN: center; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #mod-lesson-view #content .invisiblefieldset { TEXT-ALIGN: left; DISPLAY: block } #mod-quiz-view .quizinfo { TEXT-ALIGN: center } #mod-quiz-view #page .quizgradefeedback { TEXT-ALIGN: center } #mod-quiz-view #page .quizattempt { TEXT-ALIGN: center } #mod-quiz-view #page .quizattemptsummary TD P { MARGIN-TOP: 0px } #mod-quiz-view .generalbox#feedback { PADDING-BOTTOM: 15px; WIDTH: 70%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #mod-quiz-view .generalbox#feedback H2 { MARGIN: 0px } BODY#mod-quiz-view .generalbox#feedback .overriddennotice { TEXT-ALIGN: center; FONT-SIZE: 0.7em } #mod-quiz-view .generalbox#feedback H3 { TEXT-ALIGN: left } .generalbox#passwordbox { WIDTH: 70%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #passwordform { MARGIN: 1em 0px } #mod-quiz-attempt #page { TEXT-ALIGN: center } #mod-quiz-attempt .pagingbar { MARGIN: 1.5em auto } #mod-quiz-attempt #page { TEXT-ALIGN: center } #mod-quiz-attempt #timer .generalbox { WIDTH: 150px } .securewindow#mod-quiz-attempt .que { MARGIN-LEFT: 155px; MARGIN-RIGHT: 155px } #mod-quiz-attempt #timer { POSITION: absolute; LEFT: 10px } BODY#question-preview .quemodname { TEXT-ALIGN: center } BODY#question-preview .controls { TEXT-ALIGN: center } BODY#question-preview .quemodname { TEXT-ALIGN: center } BODY#question-preview .controls { TEXT-ALIGN: center } #mod-quiz-attempt #page .controls { TEXT-ALIGN: center; MARGIN: 8px auto } #mod-quiz-review #page .controls { TEXT-ALIGN: center; MARGIN: 8px auto } #mod-quiz-review .pagingbar { MARGIN: 1.5em auto } #mod-quiz-review .pagingbar { MARGIN: 1.5em auto } TABLE.quizreviewsummary { WIDTH: 100%; MARGIN-BOTTOM: 1.8em } TABLE.quizreviewsummary TR { } TABLE.quizreviewsummary TH.cell { TEXT-ALIGN: right; PADDING-BOTTOM: 1px; PADDING-LEFT: 1em; WIDTH: 10em; PADDING-RIGHT: 0.5em; FONT-WEIGHT: bold; PADDING-TOP: 1px } TABLE.quizreviewsummary TD.cell { PADDING-BOTTOM: 1px; PADDING-LEFT: 0.5em; PADDING-RIGHT: 1em; PADDING-TOP: 1px } #mod-quiz-mod #reviewoptionshdr .fitem { WIDTH: 30%; FLOAT: left; MARGIN-LEFT: 10px; CLEAR: none } #mod-quiz-mod #reviewoptionshdr .fitemtitle { TEXT-ALIGN: left; WIDTH: 100%; HEIGHT: 2.5em; MARGIN-LEFT: 0px; FONT-WEIGHT: bold } #mod-quiz-mod #reviewoptionshdr FIELDSET.fgroup { TEXT-ALIGN: left; WIDTH: 100%; MARGIN-LEFT: 0px } #mod-quiz-mod #reviewoptionshdr FIELDSET.fgroup SPAN { FLOAT: left; CLEAR: left } #mod-quiz-edit #page .controls { TEXT-ALIGN: center; CLEAR: left } #mod-quiz-edit #page .quizattemptcounts { TEXT-ALIGN: center; CLEAR: left } #mod-quiz-edit .quizquestions H2 { MARGIN-TOP: 0px } #mod-quiz-edit #showbreaks { MARGIN-TOP: 0.7em } .quizquestionlistcontrols { TEXT-ALIGN: center } #mod-quiz-report TABLE#attempts { MARGIN: auto; WIDTH: 80% } #mod-quiz-report TABLE#commands { MARGIN: auto; WIDTH: 80% } #mod-quiz-report TABLE#itemanalysis { MARGIN: auto; WIDTH: 80% } #mod-quiz-report TABLE#attempts { CLEAR: both } #mod-quiz-report H2.main { CLEAR: both } #mod-quiz-report TABLE#attempts { MARGIN: 20px auto } #mod-quiz-report TABLE#attempts .header { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-report TABLE#attempts .cell { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-report TABLE#attempts .header .commands { DISPLAY: inline } #mod-quiz-report TABLE#attempts .picture { WIDTH: 40px } #mod-quiz-report TABLE#attempts TD { BORDER-LEFT: 1px solid; VERTICAL-ALIGN: middle; BORDER-RIGHT: 1px solid } #mod-quiz-report TABLE#attempts .header { TEXT-ALIGN: left } #mod-quiz-report TABLE#attempts .picture { TEXT-ALIGN: center !important } #mod-quiz-report .controls { TEXT-ALIGN: center } #mod-quiz-report TABLE#itemanalysis { MARGIN: 20px auto } #mod-quiz-report TABLE#itemanalysis .header { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-report TABLE#itemanalysis .cell { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-report TABLE#itemanalysis .header .commands { DISPLAY: inline } #mod-quiz-report TABLE#itemanalysis TD { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #mod-quiz-report TABLE#itemanalysis .header { TEXT-ALIGN: left } #mod-quiz-report TABLE#itemanalysis .numcol { TEXT-ALIGN: center; VERTICAL-ALIGN: middle !important } #mod-quiz-report TABLE#itemanalysis .uncorrect { COLOR: red } #mod-quiz-report TABLE#itemanalysis .correct { COLOR: blue; FONT-WEIGHT: bold } #mod-quiz-report TABLE#itemanalysis .partialcorrect { COLOR: green !important } #mod-quiz-report TABLE#itemanalysis .qname { COLOR: green !important } #mod-quiz-grading TABLE#grading { MARGIN: auto; WIDTH: 80% } #mod-quiz-grading TABLE#grading { MARGIN: 20px auto } #mod-quiz-grading TABLE#grading .header { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-grading TABLE#grading .cell { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-quiz-grading TABLE#grading .header .commands { DISPLAY: inline } #mod-quiz-grading TABLE#grading .picture { WIDTH: 40px } #mod-quiz-grading TABLE#grading TD { BORDER-LEFT: 1px solid; VERTICAL-ALIGN: bottom; BORDER-RIGHT: 1px solid } .mod-quiz .gradingdetails { FONT-SIZE: small } .quizattemptcounts { TEXT-ALIGN: center; MARGIN: 6px 0px; CLEAR: left } #mod-resource-view .resourcecontent { TEXT-ALIGN: center; MARGIN: 20px } #mod-resource-view .resourcepdf { TEXT-ALIGN: center; WIDTH: 100%; PADDING-TOP: 15px } .resourcecontent OBJECT { WIDTH: 600px; HEIGHT: 480px } .resourcepdf OBJECT { WIDTH: 800px; HEIGHT: 800px } .mod-resource .modified { TEXT-ALIGN: center } .mod-resource .popupnotice { TEXT-ALIGN: center; MARGIN: 40px } .ims-nav-bar { POSITION: relative; MARGIN-TOP: 0.2em } .ims-nav-button A { PADDING-BOTTOM: 0.2em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; PADDING-TOP: 0.2em } .ims-nav-dimmed { PADDING-BOTTOM: 0.2em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; PADDING-TOP: 0.2em } #ims-containerdiv { MARGIN-TOP: 0.2em } #ims-menudiv { POSITION: absolute; WIDTH: 250px; PADDING-RIGHT: 0.2em; OVERFLOW: auto; PADDING-TOP: 1em } #ims-menudiv OL { LIST-STYLE-TYPE: none; MARGIN: 0em; PADDING-LEFT: 1em } #ims-contentframe { BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: 1px solid; WIDTH: 640px; HEIGHT: 480px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid; LEFT: 260px } #ims-contentframe-no-nav { BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: 1px solid; WIDTH: 640px; HEIGHT: 480px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } #mod-resource-view DIV#footer { MARGIN-TOP: 5px } .resultgraph { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: center; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .reportsummary { TEXT-ALIGN: center } .studentreport { TEXT-ALIGN: center } .reportbuttons { TEXT-ALIGN: center } .centerpara { TEXT-ALIGN: center } .fullnamecell { WIDTH: 10%; WHITE-SPACE: nowrap; VERTICAL-ALIGN: top } .questiontext { FONT-SIZE: 1em } .smalltext { FONT-SIZE: 0.75em } #surveyform TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } #surveyform TH.hresponse { TEXT-ALIGN: center; WIDTH: 9% } .rblock LABEL { TEXT-ALIGN: center; DISPLAY: block } .foundthat { WHITE-SPACE: nowrap } .preferthat { WHITE-SPACE: nowrap } .qnummiddlecell { VERTICAL-ALIGN: middle } .optioncell { WIDTH: 50%; VERTICAL-ALIGN: top } .buttoncell { WIDTH: 5% } .questioncell { WIDTH: 50%; VERTICAL-ALIGN: top } .whitecell { BACKGROUND-COLOR: white } .sideblockheading { TEXT-ALIGN: right } .howtowiki { TEXT-ALIGN: right } .wikisearchform { TEXT-ALIGN: center } .wikilinksblock { TEXT-ALIGN: center } wikiadminactions { TEXT-ALIGN: center } .wikilinkright { TEXT-ALIGN: right; PADDING-BOTTOM: 0.5em } .wikiexportbox { MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .redfont { COLOR: red } .workshopuploadform { TEXT-ALIGN: center } .workshopkey { TEXT-ALIGN: center } #help HR { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ccc; HEIGHT: 1px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #help .example1 { COLOR: #a00 } #help .success { COLOR: #080 } #help .center { TEXT-ALIGN: center } #help .moreinfo { TEXT-ALIGN: right } #help .indent { MARGIN-LEFT: 40px } #help .indent-big { MARGIN-LEFT: 160px; MARGIN-RIGHT: 160px } #help PRE { BORDER-BOTTOM: #ddd 1px dashed; BORDER-LEFT: #ddd 1px dashed; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #eee; BORDER-TOP: #ddd 1px dashed; BORDER-RIGHT: #ddd 1px dashed; PADDING-TOP: 3px } #help CODE { BORDER-BOTTOM: #ddd 1px dashed; BORDER-LEFT: #ddd 1px dashed; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #eee; BORDER-TOP: #ddd 1px dashed; BORDER-RIGHT: #ddd 1px dashed; PADDING-TOP: 3px } .clearer { FONT-SIZE: 1px } BODY { FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif; FONT-SIZE: 100% } TABLE { FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif; FONT-SIZE: 100% } TD { FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif; FONT-SIZE: 100% } TH { FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif; FONT-SIZE: 100% } LI { FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif; FONT-SIZE: 100% } TH { FONT-WEIGHT: bold } A:link { TEXT-DECORATION: none } A:visited { TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } .img-text A:hover { TEXT-DECORATION: none } .img-text A:hover SPAN { TEXT-DECORATION: underline } H1.main { FONT-WEIGHT: bold } H2.main { FONT-WEIGHT: bold } H3.main { FONT-WEIGHT: bold } H4.main { FONT-WEIGHT: bold } H5.main { FONT-WEIGHT: bold } H6.main { FONT-WEIGHT: bold } H1 { FONT-SIZE: 1.7em } H2 { FONT-SIZE: 1.4em } H3 { FONT-SIZE: 1.1em } H4 { FONT-SIZE: 1em } .bold { FONT-WEIGHT: bold } .warning { FONT-STYLE: italic; FONT-WEIGHT: bold } .errorbox .title { TEXT-ALIGN: center; FONT-SIZE: 1.2em; FONT-WEIGHT: bold } .errorboxcontent { TEXT-ALIGN: center } .errorcode { FONT-SIZE: 0.7em } .notifytiny { LINE-HEIGHT: 100%; FONT-SIZE: 0.7em } .pagingbar .title { FONT-WEIGHT: bold } .pagingbar .thispage { FONT-WEIGHT: bold } .categorybox .category { FONT-SIZE: 1.2em; FONT-WEIGHT: bold } .helplink { FONT-SIZE: 0.8em } .headingblock { FONT-WEIGHT: bold } #site-index .subscribelink { FONT-SIZE: 0.8em } #course-view .subscribelink { FONT-SIZE: 0.8em } .files .file { FONT-SIZE: 0.9em } .files .folder { FONT-SIZE: 0.9em } .files .folder .size { FONT-WEIGHT: bold } IMG.resize { WIDTH: 1em; HEIGHT: 1em } ACRONYM { CURSOR: help } ABBR { CURSOR: help } A.useredit { COLOR: black; CURSOR: help; TEXT-DECORATION: blink } A.useredit:hover { COLOR: black; CURSOR: help; TEXT-DECORATION: blink } .blink { COLOR: black; CURSOR: help; TEXT-DECORATION: blink } .headermain { FONT-WEIGHT: bold } #header-home .headermain { FONT-SIZE: 1.5em } #header .headermain { FONT-SIZE: 1.3em } .breadcrumb { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .logininfo { FONT-SIZE: 0.8em } #header-home .headermenu FONT { FONT-SIZE: 0.8em } .arrow { FONT-FAMILY: Arial, Helvetica, Courier, sans-serif } .arrow_button INPUT { FONT-FAMILY: Arial, Helvetica, Courier, sans-serif } .navigation BUTTON { FONT-SIZE: 80% } .homelink { } .performanceinfo { FONT-SIZE: 0.6em } #footer .validators { FONT-SIZE: 0.6em } TABLE.formtable TBODY TH { TEXT-ALIGN: right; FONT-WEIGHT: normal } BODY#admin-blocks TABLE#incompatible TD.c0 { FONT-WEIGHT: bold } BODY#admin-index .explanation { FONT-SIZE: 0.7em; VERTICAL-ALIGN: bottom } BODY#admin-index .copyright { TEXT-ALIGN: center; FONT-SIZE: 0.8em } .environmenttable { FONT-SIZE: 0.8em } #admin-roles-manage .rolecap .cap-desc .cap-name { FONT-SIZE: 0.75em } #admin-roles-override .rolecap .cap-desc .cap-name { FONT-SIZE: 0.75em } #adminsettings .form-shortname { FONT-SIZE: 0.75em } #adminsettings .form-defaultinfo { FONT-SIZE: 0.8em } #admin-roles-override .c1.cell { FONT-SIZE: 0.7em } #admin-roles-assign .c3.cell { FONT-SIZE: 0.7em } #admin-roles-assign .c1.cell { FONT-SIZE: 0.7em } #admin-lang .translator .strkey { FONT-SIZE: 0.75em } #admin-uploaduser TABLE#uupreview { FONT-SIZE: 0.8em } #admin-uploaduser TABLE#uuresults { FONT-SIZE: 0.9em } #adminsettings .form-warning { FONT-SIZE: 0.8em } #adminsettings .form-overridden { FONT-SIZE: 0.8em } .plugincompattable { FONT-SIZE: 70% } .plugincompattable TD.standard { FONT-WEIGHT: normal } .plugincompattable TD.nonstandard { FONT-WEIGHT: bold } .plugincompattable TD.missingplugin { FONT-WEIGHT: bold } .plugincompattable TD.warning { FONT-STYLE: normal } .plugincompattable { TEXT-ALIGN: left } .plugincheckwrapper { TEXT-ALIGN: center } .course-report-outline TD.lastaccess { FONT-SIZE: 0.8em } .course-report-outline TR.section { TEXT-ALIGN: center } A.skip-block { TEXT-DECORATION: none } .sideblock IMG.resize { WIDTH: 0.8em; HEIGHT: 0.9em } .breadcrumb IMG.resize { WIDTH: 0.8em; HEIGHT: 0.9em } .sideblock .searchform IMG.resize { WIDTH: 1em; HEIGHT: 1.1em } .sideblock .header { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .sideblock H2 { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .sideblock .content { LINE-HEIGHT: 1.2em; FONT-SIZE: 0.9em } .sideblock A { LINE-HEIGHT: 1.2em } .sideblock .content H3 { FONT-SIZE: 1em } .sideblock .content H2 { FONT-SIZE: 1em } .sideblock .content .message { FONT-SIZE: 0.9em } .sideblock .header .commands { FONT-SIZE: 0.9em } .sideblock .footer { FONT-SIZE: 0.9em } .sideblock .head { FONT-SIZE: 0.9em } .sideblock .info { FONT-SIZE: 0.9em } .sideblock .event { FONT-SIZE: 0.9em } .sideblock .date { FONT-STYLE: italic } .block_site_main_menu .footer SELECT { FONT-SIZE: 0.8em } .block_messages .content .listentry { FONT-SIZE: 0.75em } .block_online_users .content .listentry { FONT-SIZE: 0.75em } .blogpost .audience { FONT-SIZE: 0.85em } .blogpost .tags { FONT-SIZE: 0.85em } #calendar .sidecalendar ABBR { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .block_calendar_month ABBR { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #calendar .eventnone A { COLOR: black; CURSOR: text; TEXT-DECORATION: none } .block_calendar_month .eventnone A { COLOR: black; CURSOR: text; TEXT-DECORATION: none } #calendar .maincalendar .eventlist .event .referer { FONT-WEIGHT: bold } #calendar .maincalendar .eventlist .event .course { FONT-SIZE: 0.8em } #calendar .maincalendar .eventlist .event .description .commands { TEXT-ALIGN: right } #calendar .maincalendar TABLE.calendarmonth TD { FONT-SIZE: 0.8em } #calendar DIV.header { FONT-WEIGHT: bold } #calendar .sidecalendar .filters { FONT-SIZE: 0.8em } .sideblock .filters TD { FONT-SIZE: 1.1em } #calendar .maincalendar .controls { FONT-SIZE: 1.2em } #calendar .maincalendar .day { FONT-WEIGHT: bold } TABLE.minicalendar { FONT-SIZE: 0.85em } .cal_popup_caption { FONT-FAMILY: sans-serif; FONT-SIZE: 0.8em; FONT-WEIGHT: bold } .cal_popup_close { FONT-FAMILY: sans-serif; FONT-SIZE: 0.8em; FONT-WEIGHT: bold } #calendar .maincalendar .calendar-controls .current { FONT-WEIGHT: bold } #course-view .section { LINE-HEIGHT: 1.2em; FONT-SIZE: 0.95em } #course-view .section .activity { PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0.2em } #course-view .section .activity A { LINE-HEIGHT: 1em } #course-view .section .weekdates { MARGIN: 0px; FONT-SIZE: 1em; FONT-WEIGHT: normal } #course-view .section .left { FONT-WEIGHT: bold } .activitydate { FONT-SIZE: 0.9em } .activityhead { FONT-SIZE: 0.9em } .weeklydatetext { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .coursebox .info { FONT-SIZE: 1em } .coursebox .teachers { FONT-SIZE: 0.9em } .coursebox .cost { FONT-SIZE: 0.9em } .coursebox .summary { FONT-SIZE: 0.9em } #course-recent H2.main { FONT-SIZE: 1.1em } #course-recent .user { FONT-SIZE: 0.75em } #course-recent .grade { FONT-STYLE: italic; FONT-SIZE: 0.9em } #course-recent .forum-recent .reply .title { FONT-STYLE: italic; FONT-SIZE: 0.9em } #course-recent .forum-recent .discussion .title { FONT-STYLE: italic; FONT-SIZE: 0.9em; FONT-WEIGHT: bold } H2.headingblock { FONT-SIZE: 1.1em } .section_add_menus OPTGROUP { FONT-STYLE: italic; FONT-WEIGHT: normal } .section .groupinglabel { COLOR: #666666 } BODY#doc-contents H1 { FONT-SIZE: 0.9em } BODY#doc-contents UL { FONT-SIZE: 0.8em } BODY#grade-index .grades .header { FONT-SIZE: 0.7em; FONT-WEIGHT: bold } .grade-edit-scale .scale_options { FONT-SIZE: 0.7em } #grade-aggregation-help DT { FONT-WEIGHT: bold } #grade-aggregation-help DD.example { FONT-STYLE: italic } #grade-aggregation-help CODE { FONT-STYLE: normal } #login-index #content { FONT-SIZE: 0.85em } .logtable TD { FONT-SIZE: 0.8em } .logtable TH { FONT-SIZE: 0.9em } .message-discussion-noframes #userinfo .name H1 { FONT-SIZE: 1em; FONT-WEIGHT: bold } .message-discussion-noframes #userinfo .commands { FONT-SIZE: 0.8em } .message-discussion-noframes #send H1 { FONT-SIZE: 1em } .message .noframesjslink { FONT-SIZE: 0.8em } .message-discussion-noframes #messages H1 { FONT-SIZE: 1em } .message .link { FONT-SIZE: 0.8em } .message_form { FONT-SIZE: 0.8em } .message .heading { FONT-SIZE: 1em; FONT-WEIGHT: bold } .message .date { FONT-SIZE: 0.9em } .message .contact { FONT-SIZE: 0.9em } .message .summary { FONT-SIZE: 0.9em } .message .note { FONT-SIZE: 0.8em } .message .pix { FONT-SIZE: 0.8em } .message .author { FONT-SIZE: 0.8em; FONT-WEIGHT: bold } .message .time { FONT-STYLE: italic; FONT-SIZE: 0.8em } .message .content { FONT-SIZE: 0.8em } #message-user .commands SPAN { WHITE-SPACE: nowrap; FONT-SIZE: 0.7em } #message-user .name { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .my .courseboxcontent .overview .info { FONT-SIZE: 0.7em } .que .no { FONT-SIZE: 1.2em; FONT-WEIGHT: bold } .que .grade { FONT-SIZE: 0.8em } .que .history { FONT-SIZE: 75% } .tabtree A.nolink:hover { TEXT-DECORATION: none } .tag_cloud .s20 { FONT-SIZE: 1.5em; FONT-WEIGHT: bold } .tag_cloud .s19 { FONT-SIZE: 1.5em } .tag_cloud .s18 { FONT-SIZE: 1.4em; FONT-WEIGHT: bold } .tag_cloud .s17 { FONT-SIZE: 1.4em } .tag_cloud .s16 { FONT-SIZE: 1.3em; FONT-WEIGHT: bold } .tag_cloud .s15 { FONT-SIZE: 1.3em } .tag_cloud .s14 { FONT-SIZE: 1.2em; FONT-WEIGHT: bold } .tag_cloud .s13 { FONT-SIZE: 1.2em } .tag_cloud .s12 { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .tag_cloud .s11 { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .tag_cloud .s10 { FONT-SIZE: 1.1em } .tag_cloud .s9 { FONT-SIZE: 1.1em } .tag_cloud .s8 { FONT-SIZE: 1em; FONT-WEIGHT: bold } .tag_cloud .s7 { FONT-SIZE: 1em; FONT-WEIGHT: bold } .tag_cloud .s6 { FONT-SIZE: 1em } .tag_cloud .s5 { FONT-SIZE: 1em } .tag_cloud .s4 { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .tag_cloud .s3 { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .tag_cloud .s2 { FONT-SIZE: 0.9em } .tag_cloud .s1 { FONT-SIZE: 0.9em } .tag_cloud .s0 { FONT-SIZE: 0.8em } .userinfobox .username { FONT-WEIGHT: bold } .userinfobox .links { FONT-SIZE: 0.7em } .userinfobox TD.label { FONT-WEIGHT: bold } BODY#user-index #longtimenosee { FONT-SIZE: 0.8em } .iplookup #header H1.headermain { FONT-SIZE: 1em } .iplookup #note { FONT-STYLE: italic; FONT-SIZE: 0.8em } #mod-assignment-index .cell { FONT-SIZE: 0.8em } #wordcount { FONT-SIZE: 0.8em } #mod-chat-index .cell { FONT-SIZE: 0.8em } #mod-chat-gui_basic H1 { FONT-SIZE: 1.4em } #mod-chat-gui_basic #participants .idle { FONT-SIZE: 0.6em } #mod-chat-view #chatcurrentusers .chatuserdetails { FONT-SIZE: 0.6em } #mod-choice-index .cell { FONT-SIZE: 0.8em } .forumnodiscuss { FONT-WEIGHT: bold } .forumpost .topic .subject { FONT-WEIGHT: bold } .forumpost .topic .author { FONT-SIZE: 0.8em } .forumpost .commands { FONT-SIZE: 0.9em } .forumpost .link { FONT-SIZE: 0.9em } .forumpost .footer { FONT-SIZE: 0.9em } .forumheaderlist .discussion .lastpost { FONT-SIZE: 0.7em } BODY#mod-forum-search .introcontent { FONT-WEIGHT: bold } BODY#mod-forum-index .generalbox .cell { FONT-SIZE: 0.8em } .forumpost .edited { FONT-STYLE: italic } .glossarypost .commands { FONT-SIZE: 0.8em } .glossarypost .author { FONT-SIZE: 0.8em } .glossarypost .time { FONT-SIZE: 0.8em } .glossarycategoryheader H2 { MARGIN: 0px; FONT-SIZE: 1em } .glossarypost .concept H3 { MARGIN: 0px; FONT-SIZE: 1em } .glossarypost DIV.concept H3 { DISPLAY: inline } .continuous.glossarypost .concept { DISPLAY: inline } .glossarypost .entryheader { TEXT-ALIGN: left; FONT-WEIGHT: normal } .glossarycomment .author { FONT-SIZE: 0.8em } .entrylowersection .aliases { FONT-SIZE: 0.8em } .entrylowersection .icons { FONT-SIZE: 0.8em } .entrylowersection .ratings { FONT-SIZE: 0.8em } #mod-glossary-index .cell { FONT-SIZE: 0.8em } #mod-journal-view .lastedit { FONT-SIZE: 0.7em } #mod-journal-view .editend { FONT-SIZE: 0.7em } #mod-journal-view .author { FONT-SIZE: 1em; FONT-WEIGHT: bold } #mod-journal-view .time { FONT-STYLE: italic; FONT-SIZE: 0.7em } #mod-journal-view .grade { FONT-STYLE: italic; FONT-WEIGHT: bold } #mod-journal-index .cell { FONT-SIZE: 0.8em } #mod-lesson-index .cell { FONT-SIZE: 0.8em } #mod-resource-index .cell { FONT-SIZE: 0.8em } .mod-resource .modified { FONT-SIZE: 0.6em } .ims-nav-dimmed { FONT-SIZE: 0.8em } .ims-nav-button { FONT-SIZE: 0.8em } #ims-toc-selected { FONT-WEIGHT: bold } #ims-menudiv { FONT-SIZE: 0.8em } #mod-scorm-index .cell { FONT-SIZE: 0.8em } #mod-survey-index .cell { FONT-SIZE: 0.8em } #mod-wiki-index .cell { FONT-SIZE: 0.8em } #mod-workshop-index .cell { FONT-SIZE: 0.8em } #thegroup { DISPLAY: block; FONT-SIZE: 0.8em } #thegrouping { DISPLAY: block; FONT-SIZE: 0.8em } #dummygrouping { DISPLAY: block; FONT-SIZE: 0.8em } .phpinfo TABLE { BORDER-COLLAPSE: collapse } .phpinfo .center { TEXT-ALIGN: center } .phpinfo .e { BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; FONT-SIZE: 0.8em; VERTICAL-ALIGN: baseline; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid } .v { BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; FONT-SIZE: 0.8em; VERTICAL-ALIGN: baseline; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid } .h { BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; FONT-SIZE: 0.8em; VERTICAL-ALIGN: baseline; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid } .phpinfo .e { BACKGROUND-COLOR: #ccccff; COLOR: #000000; FONT-WEIGHT: bold } .phpinfo .h { BACKGROUND-COLOR: #9999cc; COLOR: #000000; FONT-WEIGHT: bold } .phpinfo .v { BACKGROUND-COLOR: #cccccc; COLOR: #000000 } .sideblock .content H3.eventskey { FONT-SIZE: 0.8em } A:link { COLOR: #0000ff } A:visited { COLOR: #0000ff } A.dimmed:link { COLOR: #aaaaaa } A.dimmed:visited { COLOR: #aaaaaa } A:hover { COLOR: #ff0000 } A.autolink:link { BACKGROUND: #dddddd; COLOR: #000000 } A.autolink:visited { BACKGROUND: #dddddd; COLOR: #000000 } A.glossary.autolink:hover { CURSOR: help } IMG.userpicture { BORDER-BOTTOM-COLOR: #000; BORDER-TOP-COLOR: #000; BORDER-RIGHT-COLOR: #000; BORDER-LEFT-COLOR: #000 } IMG.grouppicture { BORDER-BOTTOM-COLOR: #000; BORDER-TOP-COLOR: #000; BORDER-RIGHT-COLOR: #000; BORDER-LEFT-COLOR: #000 } .block_online_users .listentry IMG { BORDER-BOTTOM: #888; BORDER-LEFT: #888; BORDER-TOP: #888; BORDER-RIGHT: #888 } BODY { BACKGROUND-COLOR: #fafafa; COLOR: #000 } TH.header { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } TD.header { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } DIV.header { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .navbar { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } TABLE.formtable TBODY TH { BACKGROUND-IMAGE: none; BACKGROUND-COLOR: transparent } .highlight { BACKGROUND-COLOR: #aaffaa } .highlight2 { COLOR: #aa0000 } .r0 { } .r1 { } .notifyproblem { COLOR: #660000 } .notifysuccess { COLOR: #006600 } .notifytiny { COLOR: #000044 } #admin-auth_config .required { BACKGROUND-COLOR: #dddddd } .generalbox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .informationbox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .feedbackbox { BORDER-BOTTOM-COLOR: #888888; BORDER-TOP-COLOR: #888888; BORDER-RIGHT-COLOR: #888888; BORDER-LEFT-COLOR: #888888 } .feedbackby { BACKGROUND-COLOR: #bbbbbb } .noticebox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .errorbox { BORDER-BOTTOM-COLOR: #660000; BACKGROUND-COLOR: #990000; BORDER-TOP-COLOR: #660000; COLOR: #ffffff; BORDER-RIGHT-COLOR: #660000; BORDER-LEFT-COLOR: #660000 } .errorboxcontent { BACKGROUND-COLOR: #ffbbbb } .tabledivider { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .sitetopic { } .sitetopiccontent { BORDER-BOTTOM-COLOR: #dddddd; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .dimmed_text { COLOR: #aaaaaa } .dimmed_text A { COLOR: #aaaaaa } .teacheronly { COLOR: #990000 } .unread { BACKGROUND: #ffd991 } .censoredtext { BACKGROUND: #000000; COLOR: #000000 } .generaltab { BACKGROUND-COLOR: #bbbbbb } .generaltabinactive { BACKGROUND-COLOR: #bbbbbb } .generaltabselected { BACKGROUND-COLOR: #dddddd } .generaltabinactive { COLOR: #cccccc } .generaltable .cell { BORDER-BOTTOM-COLOR: #eeeeee; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #eeeeee; BORDER-RIGHT-COLOR: #eeeeee; BORDER-LEFT-COLOR: #eeeeee } .generaltable { BORDER-BOTTOM-COLOR: #eeeeee; BORDER-TOP-COLOR: #eeeeee; BORDER-RIGHT-COLOR: #eeeeee; BORDER-LEFT-COLOR: #eeeeee } .breadcrumb .sep { COLOR: #aaa } #admin-report-unittest-index .sep { COLOR: #aaa } .navigation SELECT { BACKGROUND-COLOR: #ffffff } .navigation OPTGROUP { BACKGROUND-COLOR: #eeeeee } .navigation OPTGROUP OPTION { BACKGROUND-COLOR: #ffffff } .debugwarn { TEXT-ALIGN: center; BACKGROUND: #fdd } .homelink A:link { COLOR: #000; TEXT-DECORATION: none } .homelink A:visited { COLOR: #000; TEXT-DECORATION: none } .homelink A:hover { COLOR: #000; TEXT-DECORATION: none } .homelink A:link { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .homelink A:visited { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .homelink A:hover { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #4a4a4a 2px solid; BORDER-TOP: #4a4a4a 2px solid; BORDER-RIGHT: #cecece 1px solid } .admin .generalboxcontent { BACKGROUND-COLOR: #eeeeee } .admin .generalbox { BORDER-BOTTOM-COLOR: #bbbbbb; BACKGROUND-COLOR: #eeeeee; BORDER-TOP-COLOR: #bbbbbb; BORDER-RIGHT-COLOR: #bbbbbb; BORDER-LEFT-COLOR: #bbbbbb } .admin .informationbox { BORDER-BOTTOM-COLOR: #bbbbbb; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #bbbbbb; BORDER-RIGHT-COLOR: #bbbbbb; BORDER-LEFT-COLOR: #bbbbbb } #admin-index .adminerror { BACKGROUND-COLOR: #ff6666 } BODY#admin-index .c0 { BACKGROUND-COLOR: #fafafa } BODY#admin-blocks TABLE#blocks .r0 { BACKGROUND-COLOR: #f0f0f0 } BODY#admin-blocks TABLE#incompatible .r0 { BACKGROUND-COLOR: #f0f0f0 } BODY#admin-blocks TABLE#blocks .r1 { BACKGROUND-COLOR: #fafafa } BODY#admin-blocks TABLE#incompatible .r1 { BACKGROUND-COLOR: #fafafa } BODY#admin-blocks TABLE#incompatible TD.c0 { COLOR: #ff0000 } TABLE.flexible .r0 { BACKGROUND-COLOR: #f0f0f0 } TABLE.flexible .r1 { BACKGROUND-COLOR: #fafafa } #admin-report-unittest-index SPAN.notice { COLOR: teal } #admin-report-unittest-index B.pass { COLOR: green } #admin-report-unittest-index B.fail { COLOR: red } B.exception { COLOR: red } #admin-report-unittest-index .exception { BACKGROUND-COLOR: #fdd } .exception PRE { BACKGROUND-COLOR: #fdd } #admin-report-unittest-index .unittestsummary { COLOR: white } #admin-report-unittest-index .failed.unittestsummary { BACKGROUND-COLOR: red } #admin-report-unittest-index .passed.unittestsummary { BACKGROUND-COLOR: green } #admin-report-security-index .statuswarning { BACKGROUND-COLOR: #f0e000 } #admin-report-security-index .statusserious { BACKGROUND-COLOR: #f07000 } #admin-report-security-index .statuscritical { BACKGROUND-COLOR: #f00000 } .plugincompattable TD.ok { COLOR: #008000 } .plugincompattable TD.warning { COLOR: #df7800 } .plugincompattable TD.error { COLOR: #df0000 } #adminsettings FIELDSET { BORDER-BOTTOM-COLOR: #bbb; BACKGROUND-COLOR: #eee; BORDER-TOP-COLOR: #bbb; COLOR: #000; BORDER-RIGHT-COLOR: #bbb; BORDER-LEFT-COLOR: #bbb } #adminsettings FIELDSET.error { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } #adminsettings FIELDSET.error LEGEND { COLOR: red } #adminsettings .form-shortname { COLOR: #888 } #adminsettings .form-overridden { BACKGROUND-COLOR: #ff6 } #adminsettings .form-warning { BACKGROUND-COLOR: #f88 } #adminsettings .form-defaultinfo { COLOR: #888 } #adminsettings .form-item .pathok { COLOR: green } #adminsettings .form-item .patherror { COLOR: red } .sideblock.block_admin_tree .current.link { BACKGROUND-COLOR: #eeeeee } .sideblock.block_admin_tree .criticalnotification.link { BACKGROUND-COLOR: #ff6666 } .sideblock.block_admin_tree .hidden.link { COLOR: #999999 } #admin-lang .translator { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #admin-lang .translator TR.r0 { BACKGROUND-COLOR: #f0f0f0 } #admin-lang .translator TR.r1 { BACKGROUND-COLOR: #fafafa } #admin-lang .translator .strkey { COLOR: #666666 } #admin-lang .translator .bothmissing { BACKGROUND-COLOR: #ef6868 } #admin-lang .translator .mastermissing { BACKGROUND-COLOR: #feff7f } #admin-lang .translator .localdifferent { BACKGROUND-COLOR: #aaffaa } .environmenttable .error { BACKGROUND-COLOR: red; COLOR: inherit } .environmenttable .warn { BACKGROUND-COLOR: yellow } .environmenttable .ok { BACKGROUND-COLOR: lime } #admin-uploaduser .uuinfo { BACKGROUND-COLOR: #8e8 } #admin-uploaduser .uuwarning { BACKGROUND-COLOR: #ee8 } #admin-uploaduser .uuerror { BACKGROUND-COLOR: #e99 } .sideblock .header { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .sideblock .content { BORDER-BOTTOM-COLOR: #dddddd; BACKGROUND-COLOR: #fcfcfc; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .sideblock .content HR { BORDER-TOP-COLOR: #999999 } #left-column .hidden .header { BORDER-BOTTOM-COLOR: #dddddd } #right-column .hidden .header { BORDER-BOTTOM-COLOR: #dddddd } .blogdraft.blogpost .content { BACKGROUND-COLOR: #eeeeee } .block_blog_tags .official { COLOR: #0000cc } .block_blog_tags .personal { COLOR: #666699 } #calendar .maincalendar { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #calendar .sidecalendar { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #calendar .maincalendar TABLE.calendarmonth TH { BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-LEFT-COLOR: #000000 } TABLE.minicalendar { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #calendar .maincalendar .eventlist .event { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #calendar .maincalendar .eventlist .event .topic { BACKGROUND-COLOR: #eeeeee } #calendar .maincalendar .eventlist .event .picture { BACKGROUND-COLOR: #eeeeee } #calendar .maincalendar .eventlist .event .side { BACKGROUND-COLOR: #eeeeee } #calendar .maincalendar TABLE.calendarmonth UL.events-underway { COLOR: #999999 } .minicalendar A { COLOR: #000077 } .calendarmonth A { COLOR: #000077 } #calendar .event_global { BORDER-BOTTOM-COLOR: #d6f8cd !important; BACKGROUND-COLOR: #d6f8cd; BORDER-TOP-COLOR: #d6f8cd !important; BORDER-RIGHT-COLOR: #d6f8cd !important; BORDER-LEFT-COLOR: #d6f8cd !important } .minicalendar .event_global { BORDER-BOTTOM-COLOR: #d6f8cd !important; BACKGROUND-COLOR: #d6f8cd; BORDER-TOP-COLOR: #d6f8cd !important; BORDER-RIGHT-COLOR: #d6f8cd !important; BORDER-LEFT-COLOR: #d6f8cd !important } .block_calendar_month .event_global { BORDER-BOTTOM-COLOR: #d6f8cd !important; BACKGROUND-COLOR: #d6f8cd; BORDER-TOP-COLOR: #d6f8cd !important; BORDER-RIGHT-COLOR: #d6f8cd !important; BORDER-LEFT-COLOR: #d6f8cd !important } #calendar .event_course { BORDER-BOTTOM-COLOR: #ffd3bd !important; BACKGROUND-COLOR: #ffd3bd; BORDER-TOP-COLOR: #ffd3bd !important; BORDER-RIGHT-COLOR: #ffd3bd !important; BORDER-LEFT-COLOR: #ffd3bd !important } .minicalendar .event_course { BORDER-BOTTOM-COLOR: #ffd3bd !important; BACKGROUND-COLOR: #ffd3bd; BORDER-TOP-COLOR: #ffd3bd !important; BORDER-RIGHT-COLOR: #ffd3bd !important; BORDER-LEFT-COLOR: #ffd3bd !important } .block_calendar_month .event_course { BORDER-BOTTOM-COLOR: #ffd3bd !important; BACKGROUND-COLOR: #ffd3bd; BORDER-TOP-COLOR: #ffd3bd !important; BORDER-RIGHT-COLOR: #ffd3bd !important; BORDER-LEFT-COLOR: #ffd3bd !important } #calendar .event_group { BORDER-BOTTOM-COLOR: #fee7ae !important; BACKGROUND-COLOR: #fee7ae; BORDER-TOP-COLOR: #fee7ae !important; BORDER-RIGHT-COLOR: #fee7ae !important; BORDER-LEFT-COLOR: #fee7ae !important } .minicalendar .event_group { BORDER-BOTTOM-COLOR: #fee7ae !important; BACKGROUND-COLOR: #fee7ae; BORDER-TOP-COLOR: #fee7ae !important; BORDER-RIGHT-COLOR: #fee7ae !important; BORDER-LEFT-COLOR: #fee7ae !important } .block_calendar_month .event_group { BORDER-BOTTOM-COLOR: #fee7ae !important; BACKGROUND-COLOR: #fee7ae; BORDER-TOP-COLOR: #fee7ae !important; BORDER-RIGHT-COLOR: #fee7ae !important; BORDER-LEFT-COLOR: #fee7ae !important } #calendar .event_user { BORDER-BOTTOM-COLOR: #dce7ec !important; BACKGROUND-COLOR: #dce7ec; BORDER-TOP-COLOR: #dce7ec !important; BORDER-RIGHT-COLOR: #dce7ec !important; BORDER-LEFT-COLOR: #dce7ec !important } .minicalendar .event_user { BORDER-BOTTOM-COLOR: #dce7ec !important; BACKGROUND-COLOR: #dce7ec; BORDER-TOP-COLOR: #dce7ec !important; BORDER-RIGHT-COLOR: #dce7ec !important; BORDER-LEFT-COLOR: #dce7ec !important } .block_calendar_month .event_user { BORDER-BOTTOM-COLOR: #dce7ec !important; BACKGROUND-COLOR: #dce7ec; BORDER-TOP-COLOR: #dce7ec !important; BORDER-RIGHT-COLOR: #dce7ec !important; BORDER-LEFT-COLOR: #dce7ec !important } #calendar .duration_global { BORDER-BOTTOM-COLOR: #66d14d !important; BORDER-TOP-COLOR: #66d14d !important } .minicalendar .duration_global { BORDER-BOTTOM-COLOR: #66d14d !important; BORDER-TOP-COLOR: #66d14d !important } #calendar .duration_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } .minicalendar .duration_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } #calendar .duration_course0 { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } .minicalendar .duration_course0 { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } #calendar .duration_course1 { BORDER-BOTTOM-COLOR: #0099ff !important; BORDER-TOP-COLOR: #0099ff !important } .minicalendar .duration_course1 { BORDER-BOTTOM-COLOR: #0099ff !important; BORDER-TOP-COLOR: #0099ff !important } #calendar .duration_course2 { BORDER-BOTTOM-COLOR: #ffff00 !important; BORDER-TOP-COLOR: #ffff00 !important } .minicalendar .duration_course2 { BORDER-BOTTOM-COLOR: #ffff00 !important; BORDER-TOP-COLOR: #ffff00 !important } #calendar .duration_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BORDER-TOP-COLOR: #fbbb23 !important } .minicalendar .duration_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BORDER-TOP-COLOR: #fbbb23 !important } #calendar .duration_user { BORDER-BOTTOM-COLOR: #a1becb !important; BORDER-TOP-COLOR: #a1becb !important } .minicalendar .duration_user { BORDER-BOTTOM-COLOR: #a1becb !important; BORDER-TOP-COLOR: #a1becb !important } #calendar .weekend { COLOR: #990000 } .minicalendar .weekend { COLOR: #990000 } #calendar .today { BORDER-BOTTOM-COLOR: #444444; BORDER-TOP-COLOR: #444444; BORDER-RIGHT-COLOR: #444444; BORDER-LEFT-COLOR: #444444 } .minicalendar .today { BORDER-BOTTOM-COLOR: #444444; BORDER-TOP-COLOR: #444444; BORDER-RIGHT-COLOR: #444444; BORDER-LEFT-COLOR: #444444 } #calendar .nottoday { BORDER-BOTTOM-COLOR: #eeeeee; BORDER-TOP-COLOR: #eeeeee; BORDER-RIGHT-COLOR: #eeeeee; BORDER-LEFT-COLOR: #eeeeee } .minicalendar .nottoday { BORDER-BOTTOM-COLOR: #eeeeee; BORDER-TOP-COLOR: #eeeeee; BORDER-RIGHT-COLOR: #eeeeee; BORDER-LEFT-COLOR: #eeeeee } .cal_popup_fg { BACKGROUND-COLOR: #ffffff } .cal_popup_bg { BORDER-BOTTOM-COLOR: #000000; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-LEFT-COLOR: #000000 } #calendar .maincalendar .filters TABLE { BACKGROUND-COLOR: #eeeeee } #calendar .sidecalendar .filters TABLE { BACKGROUND-COLOR: #eeeeee } .block_calendar_month .filters TABLE { BACKGROUND-COLOR: #eeeeee } #calendar TD.sidecalendar .sideblock { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .headingblock { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .headingblock .outline { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #course-view .weekscss .section { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #course-view .section TD { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #course-view .weekscss .content { BACKGROUND: #fafafa } #course-view .weekscss .section { BACKGROUND: #ffffff } #course-view .section TD.side { BACKGROUND: #ffffff } #course-view .section .side { } #course-view .section .left { } #course-view .section .right { } #course-view .weekscss .current { BACKGROUND: #ffd991 } #course-view .current TD.side { BACKGROUND: #ffd991 } #course-view .weekscss .hidden { BACKGROUND: #dddddd } #course-view .hidden TD.side { BACKGROUND: #dddddd } #course-view .topics { } #course-view .weeks { } #course-view .section .spacer { } #course-view .section .weekdates { COLOR: #777777 } #course-view .weekscss .weekdates { COLOR: #333333 } .categoryboxcontent { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .coursebox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } BODY#course-user .section { BORDER-BOTTOM-COLOR: #aaaaaa; BORDER-TOP-COLOR: #aaaaaa; BORDER-RIGHT-COLOR: #aaaaaa; BORDER-LEFT-COLOR: #aaaaaa } #admin-report .plugin { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; BACKGROUND-COLOR: #fdfdfd; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 10%; BORDER-TOP: #cecece 1px solid; MARGIN-RIGHT: 10%; BORDER-RIGHT: #cecece 1px solid } #course-report .plugin { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; BACKGROUND-COLOR: #fdfdfd; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 10%; BORDER-TOP: #cecece 1px solid; MARGIN-RIGHT: 10%; BORDER-RIGHT: #cecece 1px solid } #course-import .plugin { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; BACKGROUND-COLOR: #fdfdfd; MARGIN-BOTTOM: 20px; MARGIN-LEFT: 10%; BORDER-TOP: #cecece 1px solid; MARGIN-RIGHT: 10%; BORDER-RIGHT: #cecece 1px solid } #course-view .unread { BACKGROUND: #9ebeff } BODY#grade-index .grades { BORDER-BOTTOM-COLOR: black; BORDER-TOP-COLOR: black; BORDER-RIGHT-COLOR: black; BORDER-LEFT-COLOR: black } BODY#grade-index .grades TD { BORDER-BOTTOM-COLOR: #e0e0e0; BORDER-TOP-COLOR: #e0e0e0; BORDER-RIGHT-COLOR: #e0e0e0; BORDER-LEFT-COLOR: #e0e0e0 } BODY#grade-index .grades .r0 { BACKGROUND-COLOR: #ffffff } BODY#grade-index .grades .r1 { BACKGROUND-COLOR: #f0f0f0 } TD.grade DIV.overridden { BACKGROUND-COLOR: #dddddd } .grade-report-grader TABLE#user-grades TD.cell SPAN.gradepass { BACKGROUND-COLOR: #c2ebbd } .grade-report-grader TABLE#user-grades TD.cell SPAN.gradefail { BACKGROUND-COLOR: #ebc4bd } .grade-edit-tree .moving { BACKGROUND-COLOR: #e8eef7 } .loginbox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .twocolumns.loginbox .loginpanel { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .loginbox .subcontent { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } TABLE.message_search_results TD { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .other.message .author { COLOR: #8888cc } .me.message .author { COLOR: #999999 } .message .time { COLOR: #999999 } .message .content { } .que { BORDER-BOTTOM-COLOR: #ddd; BORDER-TOP-COLOR: #ddd; BORDER-RIGHT-COLOR: #ddd; BORDER-LEFT-COLOR: #ddd } .que .r0 { BACKGROUND-COLOR: #f5f5f5 } .que .r1 { BACKGROUND-COLOR: #eee } .calculated .answer { BACKGROUND-COLOR: #eee } .numerical .answer { BACKGROUND-COLOR: #eee } .shortanswer .answer { BACKGROUND-COLOR: #eee } .essay .answerreview { BACKGROUND-COLOR: #eee } .que .feedback { BORDER-BOTTOM-COLOR: #ddd; BORDER-TOP-COLOR: #ddd; BORDER-RIGHT-COLOR: #ddd; BORDER-LEFT-COLOR: #ddd } .que .incorrect { BACKGROUND-COLOR: #faa } .multianswer.que .incorrect { BACKGROUND-COLOR: #faa } .que .partiallycorrect { BACKGROUND-COLOR: #ff9 } .que .correct { BACKGROUND-COLOR: #afa } .logtable .r1 { BACKGROUND-COLOR: #eeeeee } .userpicture { } .userinfobox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .groupinfobox { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #mod-chat-gui_basic .text { COLOR: #000 } #mod-chat-gui_header_js-jsupdate .text { COLOR: #000 } #mod-chat-gui_basic .event { COLOR: #888 } #mod-chat-gui_basic .title { COLOR: #888 } #mod-chat-gui_header_js-jsupdate .event { COLOR: #888 } #mod-chat-gui_header_js-jsupdate .title { COLOR: #888 } #mod-chat-gui_header_js-chatinput .wait { BACKGROUND: #dddddd } #mod-chat-view #chatcurrentusers .idletime { COLOR: #888888 } #mod-forum-index .unread { BACKGROUND: #9ebeff } .forumheaderlist TD { BORDER-BOTTOM-COLOR: #ffffff; BORDER-TOP-COLOR: #ffffff; BORDER-RIGHT-COLOR: #ffffff; BORDER-LEFT-COLOR: #ffffff } .forumheaderlist .discussion .starter { BACKGROUND: #dddddd } #mod-forum-view .unread { BACKGROUND: #9ebeff } .forumheaderlist { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .forumpost { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .forumpost .content { BACKGROUND: #ffffff } .forumpost .left { BACKGROUND: #eeeeee } .forumpost .topic { BORDER-BOTTOM-COLOR: #eeeeee } .forumpost .starter { BACKGROUND: #dddddd } #mod-forum-discuss .forumpost { BACKGROUND: none transparent scroll repeat 0% 0% } #mod-forum-discuss .unread.forumpost .content { BORDER-BOTTOM-COLOR: #0046c7; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #0046c7; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #0046c7; BORDER-LEFT-COLOR: #0046c7; BORDER-LEFT-WIDTH: 2px } #mod-forum-discuss .unread.forumthread { BACKGROUND: #9ebeff } .entryboxheader { BORDER-BOTTOM-COLOR: #bbbbbb; BORDER-TOP-COLOR: #bbbbbb; BORDER-RIGHT-COLOR: #bbbbbb; BORDER-LEFT-COLOR: #bbbbbb } .entrybox { BORDER-BOTTOM-COLOR: #bbbbbb; BORDER-TOP-COLOR: #bbbbbb; BORDER-RIGHT-COLOR: #bbbbbb; BORDER-LEFT-COLOR: #bbbbbb } .entry { } .glossarypost { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .glossarypost .entryheader { BACKGROUND-COLOR: #f0f0f0 } .glossarypost .entryapproval { BACKGROUND-COLOR: #f0f0f0 } .glossarypost .picture { BACKGROUND-COLOR: #f0f0f0 } .glossarypost .entryattachment { BACKGROUND-COLOR: #f0f0f0 } .glossarypost .left { BACKGROUND-COLOR: #f0f0f0 } .glossarycomment { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } .glossarycomment .entryheader { BACKGROUND-COLOR: #f0f0f0 } .glossarycomment .picture { BACKGROUND-COLOR: #f0f0f0 } .glossarycomment .left { BACKGROUND-COLOR: #f0f0f0 } #mod-glossary-report .generalbox .teacher { BACKGROUND: #f0f0f0 } .glossarycategoryheader { BACKGROUND-COLOR: #dddddd } .glossaryformatheader { BACKGROUND-COLOR: #dddddd } #mod-journal-view .feedbackbox .left { BACKGROUND-COLOR: #dddddd } #mod-journal-view .feedbackbox .entryheader { BACKGROUND-COLOR: #dddddd } TABLE.quizattemptsummary .bestrow TD { BACKGROUND-COLOR: #e8e8e8 } TABLE.quizreviewsummary TH.cell { BACKGROUND: #f0f0f0 } TABLE.quizreviewsummary TD.cell { BACKGROUND: #fafafa } .mod-quiz .highlightgraded { BACKGROUND: yellow } .ims-nav-dimmed { COLOR: #aaaaaa; TEXT-DECORATION: none } .ims-nav-button A:link { COLOR: #000; TEXT-DECORATION: none } .ims-nav-button A:visited { COLOR: #000; TEXT-DECORATION: none } .ims-nav-button A:hover { COLOR: #000; TEXT-DECORATION: none } .ims-nav-dimmed { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .ims-nav-button A:link { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .ims-nav-button A:visited { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .ims-nav-button A:hover { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #4a4a4a 2px solid; BORDER-TOP: #4a4a4a 2px solid; BORDER-RIGHT: #cecece 1px solid } #ims-contentframe { BORDER-BOTTOM-COLOR: #cecece; BORDER-TOP-COLOR: #cecece; BORDER-RIGHT-COLOR: #cecece; BORDER-LEFT-COLOR: #cecece } #ims-contentframe-no-nav { BORDER-BOTTOM-COLOR: #cecece; BORDER-TOP-COLOR: #cecece; BORDER-RIGHT-COLOR: #cecece; BORDER-LEFT-COLOR: #cecece } #mod-survey-view .r0 { BACKGROUND-COLOR: #eeeeee } #mod-survey-view .r1 { BACKGROUND-COLOR: #dddddd } .workshoppostpicture { BACKGROUND-COLOR: #fee6b9 } .workshopassessmentheading { BACKGROUND-COLOR: #dddddd } .error { COLOR: #ff0000 } #admin-roles-override .capcurrent { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; BACKGROUND-COLOR: #ffffff; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #cecece 1px solid } #admin-roles-manage .capdefault { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; BACKGROUND-COLOR: #dddddd; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #cecece 1px solid } #admin-roles-manage .rolecap { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #admin-roles-override .rolecap { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #admin-roles-manage .rolecap .cap-desc .cap-name { COLOR: #888 } #admin-roles-override .rolecap .cap-desc .cap-name { COLOR: #888 } FORM.mform .required LABEL { COLOR: #a00 } FORM.mform .required.fdescription { COLOR: #a00 } FORM.mform .required .fgroup SPAN LABEL { COLOR: #000 } #mod-assignment-submissions .feedback .content { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid; PADDING-TOP: 10px } #mod-assignment-submissions .feedback .topic { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid; PADDING-TOP: 10px } #mod-assignment-submissions .feedback .picture { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid; PADDING-TOP: 10px } #mod-assignment-submissions FORM#options DIV { TEXT-ALIGN: right; MARGIN-LEFT: auto; MARGIN-RIGHT: 20px } .mod-assignment .feedback .files { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #efefef; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FLOAT: right; PADDING-TOP: 5px } .mod-assignment .feedback .grade { FLOAT: right } .mod-assignment .feedback .outcome { FLOAT: right } .mod-assignment .feedback .finalgrade { FLOAT: right } .mod-assignment .feedback .disabledfeedback { WIDTH: 500px; HEIGHT: 250px } .mod-assignment .feedback .from { FLOAT: left } .mod-assignment .feedback .time { FONT-SIZE: 0.8em } .mod-assignment .late { COLOR: red } .mod-assignment .files IMG { MARGIN-RIGHT: 4px } .mod-assignment .files A { WHITE-SPACE: nowrap } #mod-assignment-submissions .generaltable .r1 { BACKGROUND-COLOR: #ffffff } #mod-assignment-submissions .header .commands { DISPLAY: inline } #mod-assignment-submissions .s0 { BACKGROUND: #ffd991 } #mod-assignment-submissions TABLE.submissions TD { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid } #mod-assignment-submissions TABLE.submissions TH { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid } #mod-assignment-submissions .submissions .grade { TEXT-ALIGN: right; FONT-WEIGHT: bold } #mod-assignment-submissions .picture { WIDTH: 35px } #mod-assignment-submissions .fullname { TEXT-ALIGN: left } #mod-assignment-submissions .timemodified { TEXT-ALIGN: left; FONT-SIZE: 0.9em } #mod-assignment-submissions .timemarked { TEXT-ALIGN: left; FONT-SIZE: 0.9em } #mod-assignment-submissions .status { TEXT-ALIGN: center } #mod-assignment-submissions .submissions .outcome { TEXT-ALIGN: right } #mod-assignment-submissions .submissions .finalgrade { TEXT-ALIGN: right } #mod-assignment-view #online .singlebutton { TEXT-ALIGN: center } #mod-assignment-view #dates { MARGIN-TOP: 30px; MARGIN-BOTTOM: 30px; FONT-SIZE: 0.8em } #mod-assignment-view #dates .c0 { TEXT-ALIGN: right; FONT-WEIGHT: bold } #mod-assignment-view .feedback { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; MARGIN-TOP: 15px; WIDTH: 80%; MARGIN-LEFT: 10%; BORDER-TOP: #dddddd 1px solid; MARGIN-RIGHT: 10%; BORDER-RIGHT: #dddddd 1px solid } #mod-assignment-view .feedback .topic { BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 0px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #dddddd 0px solid; BORDER-RIGHT: #dddddd 0px solid; PADDING-TOP: 4px } #mod-assignment-view .feedback .fullname { FONT-WEIGHT: bold } #mod-assignment-view .feedback .date { FONT-SIZE: 0.8em } #mod-assignment-view .feedback .content { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } #mod-assignment-view .feedback .grade { TEXT-ALIGN: right; FONT-WEIGHT: bold } #mod-assignment-view .feedback .left { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: 35px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } #mod-assignment-submissions .qgprefs #optiontable { TEXT-ALIGN: right; MARGIN-LEFT: auto } #mod-assignment-submissions .fgcontrols { TEXT-ALIGN: center; MARGIN-TOP: 1em } #mod-assignment-submissions .fgcontrols .fastgbutton { MARGIN-TOP: 0.5em } .mod-choice .results { BORDER-COLLAPSE: separate } .mod-choice .results .data { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid } #mod-data-view #sortsearch .c0 { TEXT-ALIGN: right } #mod-data-view .approve IMG.icon { WIDTH: 34px; HEIGHT: 34px } #mod-data-preset .presetmapping { TEXT-ALIGN: center } #mod-data-preset .presetmapping TABLE { TEXT-ALIGN: left; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } #mod-data-preset .overwritesettings { MARGIN-BOTTOM: 1em } .mod-data-field .c0 { TEXT-ALIGN: right } .mod-data-field .fieldadd { MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em } .mod-data-field .sortdefault { MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em } .mod-data-field .fieldadd SELECT { MARGIN-LEFT: 1em } .mod-data-field .sortdefault SELECT { MARGIN-LEFT: 1em } .mod-data-field .fieldname { WIDTH: 300px } .mod-data-field .fielddescription { WIDTH: 300px } .presetcontrols FORM { DISPLAY: inline } .mod-lesson .contents { TEXT-ALIGN: left } .mod-lesson #layout-table { WIDTH: 100% } .mod-lesson .edit_buttons FORM { DISPLAY: inline } .mod-lesson .edit_buttons INPUT { DISPLAY: inline } .mod-lesson .clock .content { TEXT-ALIGN: center } .mod-lesson .addlinks { FONT-SIZE: 0.8em } .mod-lesson .userinfotable .cell { VERTICAL-ALIGN: middle } .mod-lesson .userinfotable .userpicture { VERTICAL-ALIGN: middle } .mod-lesson .fieldsetfix.invisiblefieldset { DISPLAY: block } .mod-lesson .fieldsetfix.invisiblefieldset TR { TEXT-ALIGN: left } #mod-lesson-view .password-form { TEXT-ALIGN: center; MARGIN-TOP: 20px } #mod-lesson-view .password-form .submitbutton { DISPLAY: inline } #mod-lesson-essay .graded { COLOR: #df041e } #mod-lesson-essay .sent { COLOR: #006600 } #mod-lesson-essay .ungraded { COLOR: #999999 } #mod-lesson-essay .gradetable { MARGIN-BOTTOM: 20px } #mod-lesson-essay .buttons { TEXT-ALIGN: center } .mod-lesson .response { PADDING-TOP: 10px } .mod-lesson .correct { } .mod-lesson .incorrect { } .mod-lesson .matches { } .mod-lesson .slideshow { PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; OVERFLOW: auto; PADDING-TOP: 15px } .mod-lesson .menu .content { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mod-lesson .menu .menuwrapper { MARGIN-BOTTOM: 10px; MAX-HEIGHT: 400px; VERTICAL-ALIGN: top; OVERFLOW: auto } .mod-lesson .menu UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 5px } .mod-lesson .menu LI { PADDING-BOTTOM: 5px } .mod-lesson .leftmenu_selected_link { } .mod-lesson .leftmenu_not_selected_link { } .mod-lesson .skip { POSITION: absolute; WIDTH: 20em; LEFT: -1000em } .mod-lesson .lessonbutton A { PADDING-LEFT: 1em; PADDING-RIGHT: 1em } .mod-lesson .lessonbutton A:link { COLOR: #000; TEXT-DECORATION: none } .mod-lesson .lessonbutton A:visited { COLOR: #000; TEXT-DECORATION: none } .mod-lesson .lessonbutton A:hover { COLOR: #000; TEXT-DECORATION: none } .mod-lesson .lessonbutton A:link { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .mod-lesson .lessonbutton A:visited { BORDER-BOTTOM: #4a4a4a 2px solid; BORDER-LEFT: #cecece 1px solid; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #4a4a4a 2px solid } .mod-lesson .lessonbutton A:hover { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #4a4a4a 2px solid; BORDER-TOP: #4a4a4a 2px solid; BORDER-RIGHT: #cecece 1px solid } .mod-lesson .horizontal.branchbuttoncontainer DIV { DISPLAY: inline } .mod-lesson .horizontal.branchbuttoncontainer FORM { DISPLAY: inline } .mod-lesson .vertical.branchbuttoncontainer .lessonbutton { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 5px } .mod-lesson .progress_bar { PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 20px } .mod-lesson .progress_bar_table { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mod-lesson .progress_bar_completed { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: green; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mod-lesson .progress_bar_todo { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: red; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mod-lesson .progress_bar_token { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #000000; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 5px; PADDING-RIGHT: 0px; HEIGHT: 20px; PADDING-TOP: 0px } .questionnaire_qbut { PADDING-RIGHT: 0.5em } #mod-questionnaire-questions DIV.qcontainer .fitemtitle { DISPLAY: none } #mod-questionnaire-questions .mform DIV.qcontainer FIELDSET.felement { WIDTH: 100% } #mod-questionnaire-questions DIV.qcontainer DIV.qnums { WIDTH: 10%; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } #mod-questionnaire-questions DIV.qcontainer DIV.qicons { WIDTH: 15%; DISPLAY: block; FLOAT: left } #mod-questionnaire-questions DIV.qcontainer DIV.qtype { WIDTH: 19%; DISPLAY: block; FLOAT: left } #mod-questionnaire-questions DIV.qcontainer DIV.qreq { WIDTH: 9%; DISPLAY: block; FLOAT: left } #mod-questionnaire-questions DIV.qcontainer DIV.qname { WIDTH: 45%; DISPLAY: block; FLOAT: left } #mod-questionnaire-questions DIV.qcontainer DIV.qheader { BORDER-BOTTOM: #000000 4px double; PADDING-BOTTOM: 10px; MARGIN-TOP: 20px; BORDER-TOP: #000000 4px double; FONT-WEIGHT: bold } #mod-questionnaire-questions DIV.qcontainer DIV.fstatic { BORDER-BOTTOM: #000000 1px solid; BACKGROUND-COLOR: #ffffff; WIDTH: 97%; MARGIN-RIGHT: 1em } #mod-questionnaire-questions DIV.qcontainer DIV.qcontent { MARGIN-BOTTOM: -1em } DIV.qoptcontainer DIV.ftextarea { MARGIN: 0pt auto 10px; WIDTH: 600px; FLOAT: none; CLEAR: all } DIV.qoptcontainer DIV.ftextarea TEXTAREA.qopts { WIDTH: 600px; HEIGHT: 10em } .structlist { LIST-STYLE-TYPE: none; WHITE-SPACE: nowrap; FONT-SIZE: small } .orgtitle { FONT-SIZE: small; FONT-WEIGHT: bold } .mod-scorm .top { VERTICAL-ALIGN: top } .mod-scorm .scorm-left { TEXT-ALIGN: left } .mod-scorm .scorm-center { TEXT-ALIGN: center } .mod-scorm .scorm-right { TEXT-ALIGN: right } .mod-scorm .scoframe { POSITION: relative; WIDTH: 100%; HEIGHT: 100% } #mod-scorm-player #scormpage { POSITION: relative; WIDTH: 100% } #mod-scorm-player #tochead { POSITION: relative; TEXT-ALIGN: center; HEIGHT: 30px; TOP: 3px } #mod-scorm-player .toc { WIDTH: 80%; MARGIN-LEFT: 20% } #mod-scorm-player .no-toc { WIDTH: 100% } #mod-scorm-player #scormobject { HEIGHT: 400px } #mod-scorm-player #scormtop { POSITION: relative; WIDTH: 100%; HEIGHT: 30px } #mod-scorm-player #scormbrowse { POSITION: absolute; TOP: 0px; LEFT: 5px } #mod-scorm-player #scormnav { POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; TOP: 3px; RIGHT: 5px } #mod-scorm-view .structurehead { TEXT-ALIGN: center } #mod-scorm-view .structurelist { LIST-STYLE-TYPE: none; WHITE-SPACE: nowrap } #mod-scorm-player #scormbox { POSITION: absolute; WIDTH: 74%; TOP: 0px; RIGHT: 0px } #mod-scorm-player #tocbox { POSITION: relative; WIDTH: 24%; FONT-SIZE: 0.8em; LEFT: 0px } #mod-scorm-player #tochead { POSITION: relative; TEXT-ALIGN: center; HEIGHT: 30px; TOP: 3px } #toctree { POSITION: relative; OVERFLOW-X: auto; OVERFLOW-Y: auto; WIDTH: 100% } .structurelist { LIST-STYLE-TYPE: none } #mod-scorm-player .structurelist { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 96%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #mod-scorm-player .structurelist UL { PADDING-LEFT: 0.5em; MARGIN-LEFT: 0.5em } #mod-scorm-view .structurelist { LIST-STYLE-TYPE: none; WHITE-SPACE: nowrap } A#mod-scorm-log-toggle { FONT-SIZE: 0.7em; FONT-WEIGHT: bold } .workshop_feedbackbox { BORDER-BOTTOM: #999999 1px solid; BORDER-LEFT: #999999 1px solid; MARGIN-TOP: 5px; BORDER-TOP: #999999 1px solid; BORDER-RIGHT: #999999 1px solid } .workshop_feedbackbox .picture { VERTICAL-ALIGN: top } .workshop_feedbackbox .author { DISPLAY: block; VERTICAL-ALIGN: top } .workshop_feedbackbox .time { DISPLAY: block; VERTICAL-ALIGN: top } .workshop_feedbackbox .content { VERTICAL-ALIGN: top } .workshop_feedbackbox .comment { DISPLAY: block } .workshop_feedbackbox .teachercomment { DISPLAY: block; FONT-WEIGHT: bold } .block_blog_tags .s20 { FONT-SIZE: 1.5em; FONT-WEIGHT: bold } .block_blog_tags .s19 { FONT-SIZE: 1.5em } .block_blog_tags .s18 { FONT-SIZE: 1.4em; FONT-WEIGHT: bold } .block_blog_tags .s17 { FONT-SIZE: 1.4em } .block_blog_tags .s16 { FONT-SIZE: 1.3em; FONT-WEIGHT: bold } .block_blog_tags .s15 { FONT-SIZE: 1.3em } .block_blog_tags .s14 { FONT-SIZE: 1.2em; FONT-WEIGHT: bold } .block_blog_tags .s13 { FONT-SIZE: 1.2em } .block_blog_tags .s12 { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .block_blog_tags .s11 { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .block_blog_tags .s10 { FONT-SIZE: 1.1em } .block_blog_tags .s9 { FONT-SIZE: 1.1em } .block_blog_tags .s8 { FONT-SIZE: 1em; FONT-WEIGHT: bold } .block_blog_tags .s7 { FONT-SIZE: 1em; FONT-WEIGHT: bold } .block_blog_tags .s6 { FONT-SIZE: 1em } .block_blog_tags .s5 { FONT-SIZE: 1em } .block_blog_tags .s4 { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .block_blog_tags .s3 { FONT-SIZE: 0.9em; FONT-WEIGHT: bold } .block_blog_tags .s2 { FONT-SIZE: 0.9em } .block_blog_tags .s1 { FONT-SIZE: 0.9em } .block_calendar_month .cal_popup_caption { FONT-SIZE: 0.85em !important } .block_calendar_month .cal_popup_fg DIV { FONT-SIZE: 0.85em !important } .block_calendar_month .filters { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-SIZE: 0.75em; PADDING-TOP: 5px } .block_calendar_month .filters TABLE { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; BORDER-SPACING: 2px; PADDING-RIGHT: 2px; BORDER-COLLAPSE: separate; PADDING-TOP: 2px } .block_calendar_month .event_global { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .block_calendar_month .event_course { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .block_calendar_month .event_group { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .block_calendar_month .event_user { BORDER-BOTTOM: 2px solid; BORDER-LEFT: 2px solid; BORDER-TOP: 2px solid; BORDER-RIGHT: 2px solid } .block_calendar_upcoming .event .date { TEXT-ALIGN: right } .block_course_summary .content { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .block_course_summary .editbutton { TEXT-ALIGN: right } .block_login .logintable { TEXT-ALIGN: center } .block_login .loginform { DISPLAY: inline } .block_login .loginform .fld INPUT { WIDTH: 5em } .block_login .loginform LABEL { PADDING-RIGHT: 4px } .block_login .loginform DIV { TEXT-ALIGN: right; MARGIN: 0.3em 0.8em; DISPLAY: block } .block_login .loginform DIV.btn.c1 { TEXT-ALIGN: center } .block_news_items .newlink { TEXT-ALIGN: center } .block_quiz_results { TEXT-ALIGN: center } .block_quiz_results TABLE.grades .number { TEXT-ALIGN: right; WIDTH: 10% } .block_quiz_results TABLE.grades .grade { TEXT-ALIGN: right; WIDTH: 10% } .block_quiz_results TABLE.grades { TEXT-ALIGN: left; WIDTH: 100% } .block_quiz_results TABLE.grades CAPTION { BORDER-BOTTOM: 1px solid; MARGIN: 1em 0px 0px; FONT-WEIGHT: bold } .block_quiz_results H1 { MARGIN: 4px; FONT-SIZE: 1.1em; FONT-WEIGHT: bold } .block_rss_client .link { PADDING-BOTTOM: 5px; FONT-SIZE: 0.82em; BORDER-TOP: #dddddd 1px solid } .block_rss_client .description { PADDING-BOTTOM: 8px; PADDING-LEFT: 10px; COLOR: #555555; FONT-SIZE: 0.78em } .block_rss_client .title { FONT-SIZE: 1em } .block_rss_client .image { } .blockconfigtable #rssfeeds { BACKGROUND-COLOR: blue; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .blockconfigtable #rssfeeds TD.actions { TEXT-ALIGN: center; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; VERTICAL-ALIGN: middle; PADDING-TOP: 10px } .blockconfigtable #rssfeeds TD.feed { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle; PADDING-TOP: 5px } .blockconfigtable #rssfeeds .title { MARGIN-BOTTOM: 2px; FONT-WEIGHT: bold } .blockconfigtable #rssfeeds .url { FONT-SIZE: 0.8em } .blockconfigtable #rssfeeds .description { FONT-SIZE: 0.8em } .blockconfigtable #rssfeeds TR.r0 { BACKGROUND-COLOR: #ffffff } .blockconfigtable #rssfeeds TR.r1 { BACKGROUND-COLOR: #f0f0f0 } .block_search_forums .searchform { TEXT-ALIGN: center } .block_search_forums .searchform IMG { VERTICAL-ALIGN: middle } .flexible TH { WHITE-SPACE: normal } .gradestable TH.user IMG { WIDTH: 20px; HEIGHT: 20px } .grade-report-grader TABLE#user-grades .catlevel2 { BACKGROUND-COLOR: #f9f9f9 } .grade-report-grader TABLE#user-grades TD.overridden { BACKGROUND-COLOR: #ddd } .grade-report-grader TABLE#user-grades TR.avg TD.cell { BACKGROUND-COLOR: #efefff; COLOR: #00008b; FONT-WEIGHT: 700 } .grade-report-grader TABLE#user-grades TR.odd TD.cell { BACKGROUND-COLOR: #efefef; WHITE-SPACE: nowrap } .grade-report-grader TABLE#user-grades TR.even TD.overridden { BACKGROUND-COLOR: #f3e4c0 } .grade-report-grader TABLE#user-grades TR.odd TD.overridden { BACKGROUND-COLOR: #efd9a4 } .grade-report-grader TABLE#user-grades TR.even TD.excluded { BACKGROUND-COLOR: #eabfff } .grade-report-grader TABLE#user-grades TR.odd TD.excluded { BACKGROUND-COLOR: #e5afff } .grade-report-grader TABLE#user-grades TR.odd TH.header { BACKGROUND-IMAGE: none; BACKGROUND-COLOR: #efefef } .grade-report-grader TABLE#user-grades TR.groupavg TD.cell { BACKGROUND-COLOR: #efffef; COLOR: #006400; FONT-WEIGHT: 700 } .grade-report-grader TABLE#user-grades TD.cat { FONT-WEIGHT: 700 } .grade-report-grader TABLE#user-grades TD.course { FONT-WEIGHT: 700 } .grade-report-grader TABLE#user-grades { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BACKGROUND-COLOR: transparent; MARGIN: 20px 0px 0px; WIDTH: auto; FONT-SIZE: 10px; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader #overDiv TABLE { MARGIN: 0px } .grade-report-grader #overDiv TABLE TD.feedback { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .grade-report-grader #overDiv .feedback { BACKGROUND-COLOR: #abf; FONT-FAMILY: Verdana; COLOR: #000; FONT-SIZE: 70%; FONT-WEIGHT: 400 } .grade-report-grader #overDiv .caption { BACKGROUND-COLOR: #56c; FONT-FAMILY: Arial; COLOR: #ccf; FONT-SIZE: 70%; FONT-WEIGHT: 700 } .grade-report-grader #overDiv .intersection { BACKGROUND-COLOR: #abf; FONT-FAMILY: Verdana; COLOR: #000; FONT-SIZE: 70%; FONT-WEIGHT: 400 } .grade-report-grader #overDiv .intersectioncaption { BACKGROUND-COLOR: #56c; FONT-FAMILY: Arial; COLOR: #ccf; FONT-WEIGHT: 700 } .grade-report-grader DIV.submit { TEXT-ALIGN: center; MARGIN-TOP: 20px } .grade-report-grader TABLE#user-grades TD { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: right; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.category { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.user { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: left; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .grade-report-grader TABLE#user-grades TH.useridnumber { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .grade-report-grader TABLE#user-grades TH.categoryitem { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.courseitem { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TD.topleft { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TD { BORDER-BOTTOM-COLOR: #cecece; BORDER-TOP-COLOR: #cecece; BORDER-RIGHT-COLOR: #cecece; BORDER-LEFT-COLOR: #cecece } .grade-report-grader TH { BORDER-BOTTOM-COLOR: #cecece; BORDER-TOP-COLOR: #cecece; BORDER-RIGHT-COLOR: #cecece; BORDER-LEFT-COLOR: #cecece } .grade-report-grader TABLE#participants TH { WIDTH: auto; VERTICAL-ALIGN: top } .grade-report-grader TABLE#user-grades TD.fillerfirst { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .grade-report-grader TABLE#user-grades TD.fillerlast { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.item { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.categoryitem { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades TH.courseitem { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader DIV.gradertoggle { DISPLAY: inline; MARGIN-LEFT: 20px } .grade-report-grader TABLE#user-grades TH.range { BORDER-BOTTOM: 1px solid; TEXT-ALIGN: right; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader TABLE#user-grades .userpic { DISPLAY: inline; MARGIN-RIGHT: 10px } .grade-report-grader TABLE#user-grades .quickfeedback { BORDER-BOTTOM: #000 1px dashed; BORDER-LEFT: #000 1px dashed; BORDER-TOP: #000 1px dashed; BORDER-RIGHT: #000 1px dashed } .grade-report-grader #siteconfiglink { TEXT-ALIGN: right } .grade-report-grader TABLE#user-grades .hidden { COLOR: #aaa } .grade-report-grader TABLE#user-grades .hidden A { COLOR: #aaa } .grade-report-grader TABLE#user-grades .datesubmitted { FONT-SIZE: 0.7em } .grade-report-grader TABLE#user-grades TD.cell { PADDING-LEFT: 5px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle } .grade-report-grader TABLE { BORDER-BOTTOM-COLOR: #cecece; BACKGROUND-COLOR: #fff; BORDER-TOP-COLOR: #cecece; BORDER-COLLAPSE: collapse; BORDER-RIGHT-COLOR: #cecece; FONT-SIZE: 10px; BORDER-LEFT-COLOR: #cecece } .grade-report-grader TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 2px } .grade-report-grader SPAN.inclusion-links { MARGIN: 0px 5px 0px 10px } .grade-report-grader TABLE#user-grades .item { BACKGROUND-COLOR: #e9e9e9 } .grade-report-grader TABLE TR.odd TH.header { BACKGROUND-IMAGE: none; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #efefef; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 0px } .grade-report-grader TABLE TR.heading TH.header { BORDER-TOP: #cecece 1px solid } .grade-report-grader TABLE#user-grades TR.heading TH.categoryitem { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 1px } .grade-report-grader TABLE#user-grades TR.heading TH.courseitem { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 1px } .grade-report-grader TABLE#user-grades TH.catlevel1.header.category { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 0px solid; VERTICAL-ALIGN: top; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid } .grade-report-grader DIV.left_scroller TH.user A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .grade-report-grader TABLE#user-grades TH.categoryitem { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #cecece 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: #cecece 0px solid; BORDER-RIGHT: #cecece 1px solid } .grade-report-grader TABLE#user-grades TH.courseitem { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #cecece 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: #cecece 0px solid; BORDER-RIGHT: #cecece 1px solid } .grade-report-grader TABLE TD.topleft { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #cecece 1px solid; VERTICAL-ALIGN: top; BORDER-TOP: #cecece 0px solid; BORDER-RIGHT: #cecece 1px solid } .grade-report-grader TABLE TD.topleft { BORDER-BOTTOM: medium none } .grade-report-grader TABLE#user-grades TD.topleft { BACKGROUND-COLOR: #fff } .grade-report-grader DIV.userpic { FLOAT: left; MARGIN-RIGHT: 10px } .grade-report-grader DIV.userpic IMG { BORDER-BOTTOM: #cecece 3px double; BORDER-LEFT: #cecece 3px double; WIDTH: 2.7em; HEIGHT: 2.7em; VERTICAL-ALIGN: middle; BORDER-TOP: #cecece 3px double; BORDER-RIGHT: #cecece 3px double } .grade-report-grader A.quickedit { LINE-HEIGHT: 1em; BACKGROUND-COLOR: transparent; MARGIN: 0.1em 0px 0px; DISPLAY: block; FLOAT: right; CLEAR: none; FONT-SIZE: 9px } .grade-report-grader A.quickedit2 { BACKGROUND-COLOR: transparent; MARGIN: 1.3em 0px 0px; DISPLAY: block; FLOAT: right; CLEAR: none } .grade-report-grader TABLE#quick_edit { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; MARGIN: 0px auto; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #cecece 1px solid } .grade-report-grader TABLE#quick_edit TD { BORDER-BOTTOM: #cecece 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #cecece 1px solid; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; VERTICAL-ALIGN: middle; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #cecece 1px solid; PADDING-TOP: 5px } .grade-report-grader TABLE#quick_edit TD IMG { BORDER-BOTTOM: #cecece 3px double; BORDER-LEFT: #cecece 3px double; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #cecece 3px double; BORDER-RIGHT: #cecece 3px double; PADDING-TOP: 0px } .grade-report-grader TD INPUT { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; MARGIN-LEFT: 10px; BORDER-TOP: #666 1px solid; MARGIN-RIGHT: 10px; BORDER-RIGHT: #666 1px solid } .grade-report-grader TABLE#quick_edit TD.fullname { BORDER-LEFT: medium none; PADDING-LEFT: 5px } .grade-report-grader TABLE#quick_edit TD.picture { BORDER-RIGHT: medium none } .grade-report-grader TABLE#quick_edit TD.finalgrade INPUT { WIDTH: 5em } .grade-report-grader H1 { TEXT-ALIGN: center; CLEAR: both } .grade-report-grader FORM { TEXT-ALIGN: center } .grade-report-grader INPUT.center { MARGIN: 10px auto 0px } .grade-report-grader .lefttbody { WIDTH: auto; VERTICAL-ALIGN: middle } .grade-report-grader TABLE#user-grades TH.fixedcolumn { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; VERTICAL-ALIGN: middle; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #cecece 1px solid } .grade-report-grader TABLE#fixed_column TH { BORDER-BOTTOM: #cecece 1px solid; BORDER-LEFT: #cecece 1px solid; VERTICAL-ALIGN: middle; BORDER-TOP: #cecece 1px solid; BORDER-RIGHT: #000 1px solid } .grade-report-grader TABLE#fixed_column TH.user { BORDER-RIGHT-COLOR: #cecece } .grade-report-grader TABLE#fixed_column { BACKGROUND-COLOR: #fff; BORDER-TOP: #cecece 1px solid; PADDING-TOP: 20px } .grade-report-grader .left_scroller { FLOAT: left; CLEAR: none; PADDING-TOP: 20px } .grade-report-grader .right_scroller { OVERFLOW-X: scroll; OVERFLOW-Y: hidden; WIDTH: auto; CLEAR: none } .grade-report-grader TABLE TR.avg { HEIGHT: 2em } .grade-report-grader TABLE TR.groupavg TD { HEIGHT: 2em } .grade-report-grader TABLE TR.avg TD { HEIGHT: 2em } .grade-report-grader TABLE TR.groupavg TH { HEIGHT: 2em } .grade-report-grader TABLE TR.avg TH { HEIGHT: 2em } .grade-report-grader TABLE TR.controls_row { HEIGHT: 2em } .grade-report-grader TABLE TR.controls_row TH { HEIGHT: 2em } .grade-report-grader TABLE TR.range_row { HEIGHT: 2em } .grade-report-grader TABLE TR.range_row TH { HEIGHT: 2em } DIV.right_scroller TR { HEIGHT: 2em } .grade-report-grader TABLE#user-grades TR.groupavg TD.cell { BACKGROUND-COLOR: #efffef } .grade-report-grader TR.groupavg TH.header { BACKGROUND-COLOR: #efffef } .grade-report-grader FORM TD.excluded { COLOR: red } .grade-report-grader .excludedfloater { FLOAT: left; COLOR: red; FONT-SIZE: 9px; FONT-WEIGHT: 700 } .grade-report-grader SPAN.gradepass { COLOR: #298721 } .grade-report-grader SPAN.gradefail { COLOR: #890d0d } .gradeweight { COLOR: #461d7c; FONT-WEIGHT: 700 } .grade-report-grader TD SELECT { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .grade-report-grader .righttest TD SELECT { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 86%; PADDING-TOP: 0px } .grade-report-grader TR.avg { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TR.controls { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TD.controls { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TH.controls { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } .grade-report-grader TR.groupavg { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TR.range { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TH.range { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TD.range { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } TR.heading TH.range { WHITE-SPACE: nowrap; HEIGHT: 2.8em !important } .heading_name_row TH { WIDTH: 2000px; WHITE-SPACE: nowrap } .heading_name_row TH SPAN { WHITE-SPACE: nowrap } .grade_icons IMG.ajax { FLOAT: right } .gradestable TH.user { WHITE-SPACE: nowrap } .gradestable TH.range { WHITE-SPACE: nowrap } .grade-report-grader .flexible TH { WHITE-SPACE: nowrap } .grade-report-grader .flexible TD { WHITE-SPACE: nowrap } .grade-report-grader .flexible TH A { WHITE-SPACE: nowrap } .grade-report-grader .flexible TD A { WHITE-SPACE: nowrap } .grade-report-grader .gradestable TH.range { WHITE-SPACE: nowrap } .grade-report-grader TD { WHITE-SPACE: nowrap } .grade-report-grader TABLE#user-grades .catlevel1 { BACKGROUND-COLOR: #fff } .grade-report-grader .r1 { BACKGROUND-COLOR: #fff } .grade-report-grader TABLE TR.even TD.cell { BACKGROUND-COLOR: #fff } .grade-report-grader TABLE TR.even TH { BACKGROUND-COLOR: #fff } .grade-report-grader TABLE#user-grades .catlevel3 { BACKGROUND-COLOR: #efefef } .grade-report-grader TABLE TR.odd TD.cell { BACKGROUND-COLOR: #efefef } .grade-report-grader TABLE#fixed_column TR.odd TH { BACKGROUND-COLOR: #efefef } .grade-report-grader TABLE#user-grades TR.odd TH { BACKGROUND-COLOR: #efefef } .grade-report-grader TABLE#user-grades TD.vmarked { BACKGROUND-COLOR: #fc3 } .grade-report-grader TABLE#user-grades TR.odd TD.vmarked { BACKGROUND-COLOR: #fc3 } .grade-report-grader TABLE#user-grades TD.vmarked { BACKGROUND-COLOR: #fc3 } .grade-report-grader TABLE#user-grades TR.odd TD.vmarked { BACKGROUND-COLOR: #fc3 } .grade-report-grader TABLE#user-grades TR.even TD.vmarked { BACKGROUND-COLOR: #fc3 } .grade-report-grader TABLE#user-grades TD.hmarked { BACKGROUND-COLOR: #ff9 } .grade-report-grader TABLE#user-grades TR.odd TD.hmarked { BACKGROUND-COLOR: #ff9 } .grade-report-grader TABLE#user-grades TD.hmarked { BACKGROUND-COLOR: #ff9 } .grade-report-grader TABLE#user-grades TR.odd TD.hmarked { BACKGROUND-COLOR: #ff9 } .grade-report-grader TABLE#user-grades TR.even TD.hmarked { BACKGROUND-COLOR: #ff9 } .grade-report-grader TABLE#user-grades TD.vmarked.hmarked { BACKGROUND-COLOR: #fc9 } .grade-report-grader TABLE#user-grades TR.odd TD.vmarked.hmarked { BACKGROUND-COLOR: #fc9 } .grade-report-grader TABLE#user-grades TD.vmarked.hmarked { BACKGROUND-COLOR: #fc9 } .grade-report-grader TABLE#user-grades TR.even TD.vmarked.hmarked { BACKGROUND-COLOR: #fc9 } .grade-report-grader TABLE#user-grades TR.odd TD.vmarked.hmarked { BACKGROUND-COLOR: #fc9 } .grade-report-grader TABLE#user-grades TR.heading { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .grade-report-grader TABLE#user-grades .heading TD { BORDER-BOTTOM: 0px solid; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; BORDER-RIGHT: 0px solid } .grade-report-grader TABLE#user-grades TD.useridnumber { TEXT-ALIGN: left } .grade-report-grader TABLE#user-grades TH { TEXT-ALIGN: left } .grade-report-grader DIV.gradeparent { TEXT-ALIGN: left } .grade-report-grader TABLE#user-grades TD.ajax { TEXT-ALIGN: left } .grade-report-grader TABLE TR.avg TD.cell { BACKGROUND-COLOR: #f3ead8 } .grade-report-grader TABLE#user-grades TD.controls { BACKGROUND-COLOR: #f3ead8 } .grade-report-grader TABLE TR.avg { BACKGROUND-COLOR: #f3ead8 } .grade-report-grader TABLE TR.avg TD { BACKGROUND-COLOR: #f3ead8 } .grade-report-grader TABLE TR.avg TH { BACKGROUND-COLOR: #f3ead8 } .grade-report-grader DIV.left_scroller TR { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader DIV.right_scroller TR { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader DIV.left_scroller TD { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader DIV.right_scroller TD { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader DIV.left_scroller TH { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader DIV.right_scroller TH { HEIGHT: 4.4em; FONT-SIZE: 10px } .grade-report-grader TABLE TH.user { TEXT-ALIGN: left; VERTICAL-ALIGN: middle } .grade-report-grader TABLE TD.useridnumber { TEXT-ALIGN: left; VERTICAL-ALIGN: middle } .grade-report-grader .yui-overlay .fullname { COLOR: #5f3e00; FONT-WEIGHT: bold } .grade-report-grader .yui-overlay .itemname { COLOR: #194f3e; FONT-WEIGHT: bold } .grade-report-grader .yui-overlay .feedback { COLOR: #5f595e } #tooltipPanel { TEXT-ALIGN: left } .yui-overlay { Z-INDEX: 2; POSITION: absolute; VISIBILITY: hidden } .yui-panel-container { Z-INDEX: 2; POSITION: absolute; VISIBILITY: hidden } .yui-panel-container FORM { MARGIN: 0px } .mask { Z-INDEX: 1; POSITION: absolute; BOTTOM: 0px; DISPLAY: none; TOP: 0px; RIGHT: 0px; LEFT: 0px } .block-scrollbars.mask { OVERFLOW: auto } .masked SELECT { _visibility: hidden } .drag SELECT { _visibility: hidden } .hide-select SELECT { _visibility: hidden } .yui-panel-container SELECT { _visibility: inherit } .hide-scrollbars { OVERFLOW: hidden } .hide-scrollbars * { OVERFLOW: hidden } .hide-scrollbars SELECT { DISPLAY: none } .show-scrollbars { OVERFLOW: auto } .show-scrollbars.yui-panel-container { OVERFLOW: visible } .show-scrollbars.yui-tt { OVERFLOW: visible } .show-scrollbars.yui-panel-container .underlay { OVERFLOW: auto } .show-scrollbars.yui-tt .yui-tt-shadow { OVERFLOW: auto } .shadow.yui-panel-container .yui-force-redraw.underlay { PADDING-BOTTOM: 1px } .yui-effect-fade .underlay { DISPLAY: none } .yui-tt-shadow { POSITION: absolute } .yui-override-padding { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .yui-panel-container .container-close { TEXT-INDENT: -10000em; OVERFLOW: hidden; TEXT-DECORATION: none } .yui-skin-sam .mask { BACKGROUND-COLOR: #000; opacity: .25 } .yui-skin-sam .yui-panel-container { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 0px } .yui-skin-sam .yui-panel { Z-INDEX: 1; BORDER-BOTTOM: #808080 1px solid; POSITION: relative; BORDER-LEFT: #808080 0px solid; BORDER-TOP: #808080 1px solid; TOP: 0px; BORDER-RIGHT: #808080 0px solid; LEFT: 0px; _zoom: normal } .yui-skin-sam .yui-panel .hd { BORDER-BOTTOM: #808080 0px solid; BORDER-LEFT: #808080 1px solid; MARGIN: 0px -1px; BORDER-TOP: #808080 0px solid; BORDER-RIGHT: #808080 1px solid } .yui-skin-sam .yui-panel .bd { BORDER-BOTTOM: #808080 0px solid; BORDER-LEFT: #808080 1px solid; MARGIN: 0px -1px; BORDER-TOP: #808080 0px solid; BORDER-RIGHT: #808080 1px solid } .yui-skin-sam .yui-panel .ft { BORDER-BOTTOM: #808080 0px solid; BORDER-LEFT: #808080 1px solid; MARGIN: 0px -1px; BORDER-TOP: #808080 0px solid; BORDER-RIGHT: #808080 1px solid } .yui-skin-sam .yui-panel .hd { BORDER-BOTTOM: #ccc 1px solid } .yui-skin-sam .yui-panel .bd { BACKGROUND-COLOR: #f2f2f2 } .yui-skin-sam .yui-panel .ft { BACKGROUND-COLOR: #f2f2f2 } .yui-skin-sam .yui-panel .hd { PADDING-BOTTOM: 0px; LINE-HEIGHT: 2; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: url(../../../../assets/skins/sam/sprite.png) repeat-x 0px -200px; COLOR: #000; FONT-SIZE: 93%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .yui-skin-sam .yui-panel .bd { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px } .yui-skin-sam .yui-panel .ft { PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 77%; BORDER-TOP: #808080 1px solid; PADDING-TOP: 5px } .yui-skin-sam .focused.yui-panel-container .yui-panel .hd { } .yui-skin-sam .container-close { POSITION: absolute; WIDTH: 25px; BACKGROUND: url(../../../../assets/skins/sam/sprite.png) no-repeat 0px -300px; HEIGHT: 15px; TOP: 5px; CURSOR: pointer; RIGHT: 6px } .yui-skin-sam .yui-panel-container .underlay { RIGHT: -1px; LEFT: -1px } .yui-skin-sam .matte.yui-panel-container { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 9px } .yui-skin-sam .shadow.yui-panel-container { _padding: 2px 4px 0 2px } .yui-skin-sam .shadow.yui-panel-container .underlay { POSITION: absolute; BACKGROUND-COLOR: #000; BOTTOM: -3px; TOP: 2px; RIGHT: -3px; LEFT: -3px; opacity: .12; _top: 0; _left: 0; _right: 0; _bottom: 0; _margin-top: 3px; _margin-left: -1px } .yui-skin-sam .yui-dialog .ft { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 100%; BORDER-TOP: medium none; PADDING-TOP: 0px } .yui-skin-sam .yui-dialog .ft .button-group { TEXT-ALIGN: right; DISPLAY: block } .yui-skin-sam .yui-dialog .ft BUTTON.default { FONT-WEIGHT: bold } .yui-skin-sam .yui-dialog .ft SPAN.default { BORDER-BOTTOM-COLOR: #304369; BORDER-TOP-COLOR: #304369; BACKGROUND-POSITION: 0px -1400px; BORDER-RIGHT-COLOR: #304369; BORDER-LEFT-COLOR: #304369 } .yui-skin-sam .yui-dialog .ft SPAN.default .first-child { BORDER-BOTTOM-COLOR: #304369; BORDER-TOP-COLOR: #304369; BORDER-RIGHT-COLOR: #304369; BORDER-LEFT-COLOR: #304369 } .yui-skin-sam .yui-dialog .ft SPAN.default BUTTON { COLOR: #fff } .yui-skin-sam .yui-dialog .ft SPAN.yui-button-disabled { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BACKGROUND-POSITION: 0pt -1500px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .yui-skin-sam .yui-dialog .ft SPAN.yui-button-disabled .first-child { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .yui-skin-sam .yui-dialog .ft SPAN.yui-button-disabled BUTTON { COLOR: #a6a6a6 } .yui-skin-sam .yui-simple-dialog .bd .yui-icon { WIDTH: 16px; BACKGROUND: url(../../../../assets/skins/sam/sprite.png) no-repeat 0px 0px; FLOAT: left; HEIGHT: 16px; MARGIN-RIGHT: 10px } .yui-skin-sam .yui-simple-dialog .bd SPAN.blckicon { BACKGROUND-POSITION: 0px -1100px } .yui-skin-sam .yui-simple-dialog .bd SPAN.alrticon { BACKGROUND-POSITION: 0px -1050px } .yui-skin-sam .yui-simple-dialog .bd SPAN.hlpicon { BACKGROUND-POSITION: 0px -1150px } .yui-skin-sam .yui-simple-dialog .bd SPAN.infoicon { BACKGROUND-POSITION: 0px -1200px } .yui-skin-sam .yui-simple-dialog .bd SPAN.warnicon { BACKGROUND-POSITION: 0px -1900px } .yui-skin-sam .yui-simple-dialog .bd SPAN.tipicon { BACKGROUND-POSITION: 0px -1250px } .yui-skin-sam .yui-tt .bd { Z-INDEX: 1; BORDER-BOTTOM: #a6982b 1px solid; POSITION: relative; BORDER-LEFT: #a6982b 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #ffee69; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: #000; BORDER-TOP: #d4c237 1px solid; TOP: 0px; BORDER-RIGHT: #a6982b 1px solid; PADDING-TOP: 2px; LEFT: 0px } .yui-skin-sam .show-scrollbars.yui-tt .bd { OVERFLOW: auto } .yui-skin-sam .yui-tt-shadow { BACKGROUND-COLOR: #000; BOTTOM: -3px; TOP: 2px; RIGHT: -3px; LEFT: -3px } .yui-skin-sam .yui-tt-shadow-visible { opacity: .12 } .yui-skin-sam .yui-panel .hd { PADDING-BOTTOM: 0px; LINE-HEIGHT: 2; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: url(http://lms.chartercollege.edu/lib/yui/assets/skins/sam/sprite.png) repeat-x 0px -200px; COLOR: #000; FONT-SIZE: 93%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .yui-skin-sam .container-close { POSITION: absolute; BORDER-BOTTOM-COLOR: #45c; BORDER-TOP-COLOR: #45c; WIDTH: 25px; BACKGROUND: url(http://lms.chartercollege.edu/lib/yui/assets/skins/sam/sprite.png) no-repeat 0px -300px; HEIGHT: 15px; BORDER-RIGHT-COLOR: #45c; BORDER-LEFT-COLOR: #45c; TOP: 5px; CURSOR: pointer; RIGHT: 6px } .yui-skin-sam .yui-simple-dialog .bd .yui-icon { WIDTH: 16px; BACKGROUND: url(http://lms.chartercollege.edu/lib/yui/assets/skins/sam/sprite.png) no-repeat 0px 0px; FLOAT: left; HEIGHT: 16px; MARGIN-RIGHT: 10px } .grade-report-grader .yui-overlay A.container-close { MARGIN-TOP: -3px } #hiddentooltiproot { DISPLAY: none } .tooltipDiv { DISPLAY: none } .grade-report-user TABLE.user-grade .datesubmitted { FONT-SIZE: 0.7em } .grade-report-user TABLE.user-grade .courseitem { FONT-WEIGHT: bold } .grade-report-user TABLE.user-grade .categoryitem { FONT-WEIGHT: bold } .grade-report-user TABLE.user-grade TD.cell { PADDING-LEFT: 5px; PADDING-RIGHT: 5px } #graded_users_selector { TEXT-ALIGN: right; FLOAT: right } .grade-report-user TABLE.user-grade .hidden { COLOR: #aaaaaa } .grade-report-user TABLE.user-grade .hidden A { COLOR: #aaaaaa } TABLE.user-grade { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; PADDING-BOTTOM: 0.25em; MARGIN: auto; PADDING-LEFT: 0.25em; PADDING-RIGHT: 0.25em; FONT-SIZE: 0.8em; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; PADDING-TOP: 0.25em } TABLE.user-grade TD { PADDING-BOTTOM: 0.25em; MARGIN: 1px; PADDING-LEFT: 0.25em; PADDING-RIGHT: 0.25em; PADDING-TOP: 0.25em } TABLE.user-grade THEAD { BORDER-BOTTOM: black 3px double } TABLE.user-grade THEAD TH { PADDING-BOTTOM: 0.25em; PADDING-LEFT: 0.75em; PADDING-RIGHT: 0.75em; PADDING-TOP: 0.25em } TABLE.user-grade TD.oddd1 { BACKGROUND-COLOR: #f3dfd0 } TABLE.user-grade TD.oddd2 { BACKGROUND-COLOR: #d0dbf3 } TABLE.user-grade TD.oddd3 { BACKGROUND-COLOR: #d0f3d6 } TABLE.user-grade TD.oddd4 { BACKGROUND-COLOR: #f0f0aa } TABLE.user-grade TD.evend2 { BACKGROUND-COLOR: #b0bbd3 } TABLE.user-grade TD.evend3 { BACKGROUND-COLOR: #b0dfb6 } TABLE.user-grade TD.evend4 { BACKGROUND-COLOR: #cac8be } TABLE.user-grade TD.b1t { BORDER-TOP: black 1px solid } TABLE.user-grade TD.b1r { BORDER-RIGHT: black 1px solid } TABLE.user-grade TD.b1b { BORDER-BOTTOM: black 1px solid } TABLE.user-grade TD.b1l { BORDER-LEFT: black 1px solid } TABLE.user-grade TD.b2t { BORDER-TOP: black 2px solid } TABLE.user-grade TD.b2r { BORDER-RIGHT: black 2px solid } TABLE.user-grade TD.b2b { BORDER-BOTTOM: black 2px solid } TABLE.user-grade TD.b2l { BORDER-LEFT: black 2px solid } TABLE.user-grade TD.baggt { FONT-STYLE: italic; FONT-WEIGHT: bold } TABLE.user-grade TD.baggb { FONT-STYLE: italic; FONT-WEIGHT: bold } TABLE.user-grade TD.baggt { BORDER-TOP: black 3px double } TABLE.user-grade TD.baggb { BORDER-BOTTOM: black 3px double } TABLE.user-grade TD.item { BORDER-LEFT: gray 1px solid; BORDER-RIGHT: gray 1px solid } TABLE.user-grade TD.excluded { BACKGROUND-COLOR: #666 } TABLE.user-grade TD.hidden { COLOR: #aaa } TABLE.user-grade TD { MIN-WIDTH: 0.5em; VERTICAL-ALIGN: top }
A:link { COLOR: #054377 } A:visited { COLOR: #054377 } A:hover { COLOR: #054377; TEXT-DECORATION: underline } BODY { BORDER-BOTTOM-COLOR: #f7f7f7; BACKGROUND-COLOR: #739fc4; BORDER-TOP-COLOR: #f7f7f7; BORDER-RIGHT-COLOR: #f7f7f7; BORDER-LEFT-COLOR: #f7f7f7 } TH.header { BACKGROUND-COLOR: #739fc4 } TD.header { BACKGROUND-COLOR: #739fc4 } DIV.header { BACKGROUND-COLOR: #739fc4 } .navbar { BORDER-BOTTOM-COLOR: #d0e2ee; BACKGROUND-COLOR: #d0e2ee; BORDER-TOP-COLOR: #d0e2ee; BORDER-RIGHT-COLOR: #d0e2ee; BORDER-LEFT-COLOR: #d0e2ee } .generalbox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .informationbox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .feedbackbox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .noticebox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .errorbox { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND-COLOR: #990000; BORDER-TOP-COLOR: #739fc4; COLOR: #ffffff; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .tabledivider { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .sitetopic { } .sitetopiccontent { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .unread { BACKGROUND: #78a2cd } #header-home { BACKGROUND: url(images/hdbg.jpg) #ececec repeat-x 1px 0px; HEIGHT: 112px } #header { BACKGROUND: url(images/hdbg.jpg) #ececec repeat-x 1px 0px; HEIGHT: 112px } .headermain { BACKGROUND: url(images/hdbgend.jpg) no-repeat 100% 0px; FLOAT: none } .admin .generalboxcontent { BACKGROUND-COLOR: #eeeeee } .admin .generalbox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .admin .informationbox { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .sideblock { BORDER-BOTTOM: #4a677f 2px groove; BORDER-LEFT: #4a677f 1px solid; BORDER-TOP: #739fc4 1px solid; BORDER-RIGHT: #4a677f 1px solid } .sideblock .header { BORDER-BOTTOM: #739fc4 2px groove; TEXT-ALIGN: left; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #739fc4; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .sideblock .content { BACKGROUND-COLOR: #ffffff } #calendar .maincalendar { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } #calendar .sidecalendar { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } #calendar .maincalendar TABLE.calendarmonth TH { BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-LEFT-COLOR: #000000 } TABLE.minicalendar { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } #calendar .maincalendar .eventlist .event { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } #calendar .maincalendar .eventlist .event .topic { BACKGROUND-COLOR: #ffffff } #calendar .maincalendar .eventlist .event .picture { BACKGROUND-COLOR: #ffffff } #calendar .maincalendar .eventlist .event .side { BACKGROUND-COLOR: #ffffff } #calendar .maincalendar TABLE.calendarmonth UL.events-underway { COLOR: #739fc4 } #calendar .event_global { BORDER-BOTTOM-COLOR: #2eba0e !important; BACKGROUND-COLOR: #2eba0e; BORDER-TOP-COLOR: #2eba0e !important; BORDER-RIGHT-COLOR: #2eba0e !important; BORDER-LEFT-COLOR: #2eba0e !important } .minicalendar .event_global { BORDER-BOTTOM-COLOR: #2eba0e !important; BACKGROUND-COLOR: #2eba0e; BORDER-TOP-COLOR: #2eba0e !important; BORDER-RIGHT-COLOR: #2eba0e !important; BORDER-LEFT-COLOR: #2eba0e !important } .block_calendar_month .event_global { BORDER-BOTTOM-COLOR: #2eba0e !important; BACKGROUND-COLOR: #2eba0e; BORDER-TOP-COLOR: #2eba0e !important; BORDER-RIGHT-COLOR: #2eba0e !important; BORDER-LEFT-COLOR: #2eba0e !important } #calendar .event_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BACKGROUND-COLOR: #ff9966; BORDER-TOP-COLOR: #ff9966 !important; BORDER-RIGHT-COLOR: #ff9966 !important; BORDER-LEFT-COLOR: #ff9966 !important } .minicalendar .event_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BACKGROUND-COLOR: #ff9966; BORDER-TOP-COLOR: #ff9966 !important; BORDER-RIGHT-COLOR: #ff9966 !important; BORDER-LEFT-COLOR: #ff9966 !important } .block_calendar_month .event_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BACKGROUND-COLOR: #ff9966; BORDER-TOP-COLOR: #ff9966 !important; BORDER-RIGHT-COLOR: #ff9966 !important; BORDER-LEFT-COLOR: #ff9966 !important } #calendar .event_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BACKGROUND-COLOR: #fbbb23; BORDER-TOP-COLOR: #fbbb23 !important; BORDER-RIGHT-COLOR: #fbbb23 !important; BORDER-LEFT-COLOR: #fbbb23 !important } .minicalendar .event_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BACKGROUND-COLOR: #fbbb23; BORDER-TOP-COLOR: #fbbb23 !important; BORDER-RIGHT-COLOR: #fbbb23 !important; BORDER-LEFT-COLOR: #fbbb23 !important } .block_calendar_month .event_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BACKGROUND-COLOR: #fbbb23; BORDER-TOP-COLOR: #fbbb23 !important; BORDER-RIGHT-COLOR: #fbbb23 !important; BORDER-LEFT-COLOR: #fbbb23 !important } #calendar .event_user { BORDER-BOTTOM-COLOR: #a1becb !important; BACKGROUND-COLOR: #a1becb; BORDER-TOP-COLOR: #a1becb !important; BORDER-RIGHT-COLOR: #a1becb !important; BORDER-LEFT-COLOR: #a1becb !important } .minicalendar .event_user { BORDER-BOTTOM-COLOR: #a1becb !important; BACKGROUND-COLOR: #a1becb; BORDER-TOP-COLOR: #a1becb !important; BORDER-RIGHT-COLOR: #a1becb !important; BORDER-LEFT-COLOR: #a1becb !important } .block_calendar_month .event_user { BORDER-BOTTOM-COLOR: #a1becb !important; BACKGROUND-COLOR: #a1becb; BORDER-TOP-COLOR: #a1becb !important; BORDER-RIGHT-COLOR: #a1becb !important; BORDER-LEFT-COLOR: #a1becb !important } #calendar .duration_global { BORDER-BOTTOM-COLOR: #2eba0e !important; BORDER-TOP-COLOR: #2eba0e !important } .minicalendar .duration_global { BORDER-BOTTOM-COLOR: #2eba0e !important; BORDER-TOP-COLOR: #2eba0e !important } #calendar .duration_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } .minicalendar .duration_course { BORDER-BOTTOM-COLOR: #ff9966 !important; BORDER-TOP-COLOR: #ff9966 !important } #calendar .duration_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BORDER-TOP-COLOR: #fbbb23 !important } .minicalendar .duration_group { BORDER-BOTTOM-COLOR: #fbbb23 !important; BORDER-TOP-COLOR: #fbbb23 !important } #calendar .duration_user { BORDER-BOTTOM-COLOR: #a1becb !important; BORDER-TOP-COLOR: #a1becb !important } .minicalendar .duration_user { BORDER-BOTTOM-COLOR: #a1becb !important; BORDER-TOP-COLOR: #a1becb !important } #calendar .weekend { COLOR: #ff0000 } .minicalendar .weekend { COLOR: #ff0000 } #calendar .today { BORDER-BOTTOM-COLOR: #000000 !important; BORDER-TOP-COLOR: #000000 !important; BORDER-RIGHT-COLOR: #000000 !important; BORDER-LEFT-COLOR: #000000 !important } .minicalendar .today { BORDER-BOTTOM-COLOR: #000000 !important; BORDER-TOP-COLOR: #000000 !important; BORDER-RIGHT-COLOR: #000000 !important; BORDER-LEFT-COLOR: #000000 !important } .cal_popup_fg { BACKGROUND-COLOR: #ffffff } .cal_popup_bg { BORDER-BOTTOM-COLOR: #000000; BACKGROUND-COLOR: #ffffff; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-LEFT-COLOR: #000000 } #calendar .maincalendar .filters TABLE { BACKGROUND-COLOR: #ffffff } #calendar .sidecalendar .filters TABLE { BACKGROUND-COLOR: #ffffff } .block_calendar_month .filters TABLE { BACKGROUND-COLOR: #ffffff } .headingblock { BORDER-BOTTOM: #4a677f 2px groove; BORDER-LEFT: #4a677f 1px solid; BACKGROUND-COLOR: #739fc4; BORDER-TOP: #739fc4 1px solid; BORDER-RIGHT: #4a677f 1px solid } .headingblock .outline { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } #course-view .weekscss .section { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #course-view .section TD { BORDER-BOTTOM-COLOR: #dddddd; BORDER-TOP-COLOR: #dddddd; BORDER-RIGHT-COLOR: #dddddd; BORDER-LEFT-COLOR: #dddddd } #course-view .content { BACKGROUND: #ffffff } #course-view .weekscss .section { BACKGROUND: #739fc4 } #course-view .section TD.side { BACKGROUND: #739fc4 } #course-view .section .side { } #course-view .section .left { } #course-view .section .right { } #course-view .weekscss .current { BACKGROUND: #3b92dc } #course-view .current TD.side { BACKGROUND: #3b92dc } #course-view .weekscss .hidden { BACKGROUND: #dddddd } #course-view .hidden TD.side { BACKGROUND: #dddddd } .categoryboxcontent { BORDER-BOTTOM: #4a677f 2px groove; BORDER-LEFT: #4a677f 1px solid; BACKGROUND: #ffffff; BORDER-TOP: #739fc4 1px solid; BORDER-RIGHT: #4a677f 1px solid } .courseboxcontent { BORDER-BOTTOM: #4a677f 2px groove; BORDER-LEFT: #4a677f 1px solid; BACKGROUND: #ffffff; BORDER-TOP: #739fc4 1px solid; BORDER-RIGHT: #4a677f 1px solid } BODY#course-user .section { BORDER-BOTTOM-COLOR: #aaaaaa; BORDER-TOP-COLOR: #aaaaaa; BORDER-RIGHT-COLOR: #aaaaaa; BORDER-LEFT-COLOR: #aaaaaa } .loginbox { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .twocolumns.loginbox .loginpanel { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .loginbox .subcontent { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } TABLE.message_search_results TD { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .message .author { COLOR: #739fc4 } .message .time { COLOR: #739fc4 } .message .content { } .userpicture { BACKGROUND: #eeeeee } .userinfobox { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND-COLOR: #f7f7f7; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .groupinfobox { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND-COLOR: #fcfcfc; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .forumheaderlist { BORDER-BOTTOM-COLOR: #1d5083; BORDER-TOP-COLOR: #1d5083; BORDER-RIGHT-COLOR: #1d5083; BORDER-LEFT-COLOR: #1d5083 } .forumpost { BORDER-BOTTOM-COLOR: #1d5083; BORDER-TOP-COLOR: #1d5083; BORDER-RIGHT-COLOR: #1d5083; BORDER-LEFT-COLOR: #1d5083 } .forumpost .content { BACKGROUND: #ffffff } .forumpost .left { BACKGROUND: #739fc4 } .forumpost .topic { BORDER-BOTTOM-COLOR: #739fc4; BACKGROUND: #d0e2ee } .forumpost .starter { BACKGROUND: #739fc4 } .forumheaderlist .discussion .starter { BACKGROUND: #d0e2ee } .forumheaderlist TD { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .sideblock .post .head { COLOR: #555555 } .forumthread .unread { BACKGROUND: #78a2cd } #mod-forum-discuss .forumpost { BACKGROUND: none transparent scroll repeat 0% 0% } #mod-forum-discuss .unread .forumpost .message { BORDER-BOTTOM-COLOR: #78a2cd; BORDER-TOP-COLOR: #78a2cd; BORDER-RIGHT-COLOR: #78a2cd; BORDER-LEFT-COLOR: #78a2cd } #mod-forum-discuss .forumthread .unread { } #mod-forum-index .unread { } .glossarypost { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .glossarypost .entryheader { BACKGROUND-COLOR: #739fc4 } .glossarypost .entryapproval { BACKGROUND-COLOR: #739fc4 } .glossarypost .picture { BACKGROUND-COLOR: #739fc4 } .glossarypost .entryattachment { BACKGROUND-COLOR: #739fc4 } .glossarypost .left { BACKGROUND-COLOR: #739fc4 } .glossarycomment { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } .glossarycomment .entryheader { BACKGROUND-COLOR: #739fc4 } .glossarycomment .picture { BACKGROUND-COLOR: #739fc4 } .glossarycomment .left { BACKGROUND-COLOR: #739fc4 } #mod-glossary-report .generalbox .teacher { BACKGROUND: #739fc4 } .categoryheader { BACKGROUND-COLOR: #efefef } .glossaryformatheader { BACKGROUND-COLOR: #739fc4 } #mod-journal-view .feedbackbox .left { BACKGROUND-COLOR: #739fc4 } #mod-journal-view .feedbackbox .entryheader { BACKGROUND-COLOR: #739fc4 } BODY#mod-quiz-report TABLE#attempts TD { BORDER-BOTTOM-COLOR: #739fc4; BORDER-TOP-COLOR: #739fc4; BORDER-RIGHT-COLOR: #739fc4; BORDER-LEFT-COLOR: #739fc4 } BODY#mod-quiz-report TABLE#attempts .r1 { BACKGROUND-COLOR: #eeeeee } .headermenu A:link { COLOR: #ffffff; TEXT-DECORATION: none } .headermenu A:visited { COLOR: #ffffff; TEXT-DECORATION: none } .headermenu A:hover { COLOR: #ffffff; TEXT-DECORATION: underline } .cornflowersurround { BORDER-BOTTOM: #4a677f 2px groove; BORDER-LEFT: #4a677f 1px solid; BACKGROUND: #d0e2ee; BORDER-TOP: #4a677f 1px solid; BORDER-RIGHT: #4a677f 1px solid } .generalboxcontent { BACKGROUND-COLOR: #ffffff } H1.main { TEXT-ALIGN: center } H2.main { TEXT-ALIGN: center } H3.main { TEXT-ALIGN: center } H4.main { TEXT-ALIGN: center } H5.main { TEXT-ALIGN: center } H6.main { TEXT-ALIGN: center } #layout-table { MARGIN-TOP: 8px; WIDTH: 100%; BORDER-COLLAPSE: separate } #layout-table #left-column { VERTICAL-ALIGN: top } #layout-table #middle-column { VERTICAL-ALIGN: top } #layout-table #right-column { VERTICAL-ALIGN: top } #layout-table #middle-column { PADDING-LEFT: 12px; PADDING-RIGHT: 12px } #layout-table #left-column { PADDING-LEFT: 10px } #layout-table #right-column { PADDING-RIGHT: 10px } DIV.headermenu { POSITION: absolute; TOP: 15px; RIGHT: 10px }
/* * JavaScript library for the quiz module. * * (c) The Open University and others. * @author [email protected] and others. * @license http://www.gnu.org/copyleft/gpl.html GNU Public License */ /* Used by quiz navigation links to force a form submit, and hence save the user's data. */ function navigate(page) { var ourForm = document.getElementById('responseform'); ourForm.action = ourForm.action.replace(/page=.*/, 'page=' + page); if (ourForm.onsubmit) { ourForm.onsubmit(); } ourForm.submit(); } /* Use this in an onkeypress handler, to stop enter submitting the forum unless you are actually on the submit button. Don't stop the user typing things in text areas. */ function check_enter(e) { var target = e.target ? e.target : e.srcElement; var keyCode = e.keyCode ? e.keyCode : e.which; if (keyCode==13 && target.nodeName.toLowerCase()!='a' && (!target.type || !(target.type=='submit' || target.type=='textarea'))) { return false; } else { return true; } } /* Used to update the on-screen countdown clock for quizzes with a time limit */ function countdown_clock(theTimer) { var timeout_id = null; quizTimerValue = Math.floor((ec_quiz_finish - new Date().getTime())/1000); if(quizTimerValue <= 0) { clearTimeout(timeout_id); document.getElementById('timeup').value = 1; var ourForm = document.getElementById('responseform'); if (ourForm.onsubmit) { ourForm.onsubmit(); } ourForm.submit(); return; } now = quizTimerValue; var hours = Math.floor(now/3600); now = now - (hours*3600); var minutes = Math.floor(now/60); now = now - (minutes*60); var seconds = now; var t = "" + hours; t += ((minutes < 10) ? ":0" : ":") + minutes; t += ((seconds < 10) ? ":0" : ":") + seconds; window.status = t.toString(); if(hours == 0 && minutes == 0 && seconds <= 15) { //go from fff0f0 to ffe0e0 to ffd0d0...ff2020, ff1010, ff0000 in 15 steps var hexascii = "0123456789ABCDEF"; var col = '#' + 'ff' + hexascii.charAt(seconds) + '0' + hexascii.charAt(seconds) + 0; theTimer.style.backgroundColor = col; } document.getElementById('time').value = t.toString(); timeout_id = setTimeout("countdown_clock(theTimer)", 1000); } /* Use to keep the quiz timer on-screen as the user scrolls. */ function movecounter(timerbox) { var pos; if (window.innerHeight) { pos = window.pageYOffset } else if (document.documentElement && document.documentElement.scrollTop) { pos = document.documentElement.scrollTop } else if (document.body) { pos = document.body.scrollTop } if (pos < theTop) { pos = theTop; } else { pos += 100; } if (pos == old) { timerbox.style.top = pos + 'px'; } old = pos; temp = setTimeout('movecounter(timerbox)',100); }
//////////////////////////////////////////////////// // spellChecker.js // // spellChecker object // // This file is sourced on web pages that have a textarea object to evaluate // for spelling. It includes the implementation for the spellCheckObject. // // Modified by LUDO (Marc Alier) for integration with the moogle environment // august 2004 [email protected] // //////////////////////////////////////////////////// // constructor function spellChecker( textObject) { // public properties - configurable //this.popUpUrl = '/moodle/lib/speller/spellchecker.html'; this.popUpName = 'spellchecker'; this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; //this.spellCheckScript = '/moodle/lib/speller/server-scripts/spellchecker.php'; //this.spellCheckScript = '/cgi-bin/spellchecker.pl'; // values used to keep track of what happened to a word this.replWordFlag = "R"; // single replace this.ignrWordFlag = "I"; // single ignore this.replAllFlag = "RA"; // replace all occurances this.ignrAllFlag = "IA"; // ignore all occurances this.fromReplAll = "~RA"; // an occurance of a "replace all" word this.fromIgnrAll = "~IA"; // an occurance of a "ignore all" word // properties set at run time this.wordFlags = new Array(); this.currentTextIndex = 0; this.currentWordIndex = 0; this.spellCheckerWin = null; this.controlWin = null; this.wordWin = null; this.textArea = textObject; // deprecated this.textInputs = arguments; this._editor=""; // BY LUDO // private methods this._spellcheck = _spellcheck; this._getSuggestions = _getSuggestions; this._setAsIgnored = _setAsIgnored; this._getTotalReplaced = _getTotalReplaced; this._setWordText = _setWordText; this._getFormInputs = _getFormInputs; // public methods this.openChecker = openChecker; this.startCheck = startCheck; this.checkTextBoxes = checkTextBoxes; this.checkTextAreas = checkTextAreas; this.spellCheckAll = spellCheckAll; this.ignoreWord = ignoreWord; this.ignoreAll = ignoreAll; this.replaceWord = replaceWord; this.replaceAll = replaceAll; this.terminateSpell = terminateSpell; this.undo = undo; // set the current window's "speller" property to the instance of this class. // this object can now be referenced by child windows/frames. window.speller = this; } // call this method to check all text boxes (and only text boxes) in the HTML document function checkTextBoxes() { this.textInputs = this._getFormInputs( "^text$" ); this.openChecker(); } // call this method to check all textareas (and only textareas ) in the HTML document function checkTextAreas() { this.textInputs = this._getFormInputs( "^textarea$" ); this.openChecker(); } // call this method to check all text boxes and textareas in the HTML document function spellCheckAll() { this.textInputs = this._getFormInputs( "^text(area)?$" ); this.openChecker(); } // call this method to check text boxe(s) and/or textarea(s) that were passed in to the // object's constructor or to the textInputs property function openChecker() { this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps ); if( !this.spellCheckerWin.opener ) { this.spellCheckerWin.opener = window; } } function startCheck( wordWindowObj, controlWindowObj ) { // set properties from args this.wordWin = wordWindowObj; this.controlWin = controlWindowObj; // reset properties this.wordWin.resetForm(); this.controlWin.resetForm(); this.currentTextIndex = 0; this.currentWordIndex = 0; // initialize the flags to an array - one element for each text input this.wordFlags = new Array( this.wordWin.textInputs.length ); // each element will be an array that keeps track of each word in the text for( var i=0; i<this.wordFlags.length; i++ ) { this.wordFlags[i] = []; } // start this._spellcheck(); return true; } function ignoreWord() { var wi = this.currentWordIndex; var ti = this.currentTextIndex; if( !this.wordWin ) { alert( 'Error: Word frame not available.' ); return false; } if( !this.wordWin.getTextVal( ti, wi )) { alert( 'Error: "Not in dictionary" text is missing.' ); return false; } // set as ignored if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) { this.currentWordIndex++; this._spellcheck(); } } function ignoreAll() { var wi = this.currentWordIndex; var ti = this.currentTextIndex; if( !this.wordWin ) { alert( 'Error: Word frame not available.' ); return false; } // get the word that is currently being evaluated. var s_word_to_repl = this.wordWin.getTextVal( ti, wi ); if( !s_word_to_repl ) { alert( 'Error: "Not in dictionary" text is missing' ); return false; } // set this word as an "ignore all" word. this._setAsIgnored( ti, wi, this.ignrAllFlag ); // loop through all the words after this word for( var i = ti; i < this.wordWin.textInputs.length; i++ ) { for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { if(( i == ti && j > wi ) || i > ti ) { // future word: set as "from ignore all" if // 1) do not already have a flag and // 2) have the same value as current word if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl ) && ( !this.wordFlags[i][j] )) { this._setAsIgnored( i, j, this.fromIgnrAll ); } } } } // finally, move on this.currentWordIndex++; this._spellcheck(); } function replaceWord() { var wi = this.currentWordIndex; var ti = this.currentTextIndex; if( !this.wordWin ) { alert( 'Error: Word frame not available.' ); return false; } if( !this.wordWin.getTextVal( ti, wi )) { alert( 'Error: "Not in dictionary" text is missing' ); return false; } if( !this.controlWin.replacementText ) { return; } var txt = this.controlWin.replacementText; if( txt.value ) { var newspell = new String( txt.value ); if( this._setWordText( ti, wi, newspell, this.replWordFlag )) { this.currentWordIndex++; this._spellcheck(); } } } function replaceAll() { var ti = this.currentTextIndex; var wi = this.currentWordIndex; if( !this.wordWin ) { alert( 'Error: Word frame not available.' ); return false; } var s_word_to_repl = this.wordWin.getTextVal( ti, wi ); if( !s_word_to_repl ) { alert( 'Error: "Not in dictionary" text is missing' ); return false; } var txt = this.controlWin.replacementText; if( !txt.value ) return; var newspell = new String( txt.value ); // set this word as a "replace all" word. this._setWordText( ti, wi, newspell, this.replAllFlag ); // loop through all the words after this word for( var i = ti; i < this.wordWin.textInputs.length; i++ ) { for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { if(( i == ti && j > wi ) || i > ti ) { // future word: set word text to s_word_to_repl if // 1) do not already have a flag and // 2) have the same value as s_word_to_repl if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl ) && ( !this.wordFlags[i][j] )) { this._setWordText( i, j, newspell, this.fromReplAll ); } } } } // finally, move on this.currentWordIndex++; this._spellcheck(); } function terminateSpell() { // called when we have reached the end of the spell checking. var msg = "Spell check complete:\n\n"; var numrepl = this._getTotalReplaced(); if( numrepl == 0 ) { // see if there were no misspellings to begin with if( !this.wordWin ) { msg = ""; } else { if( this.wordWin.totalMisspellings() ) { msg += "No words changed."; } else { msg += "No misspellings found."; } } } else if( numrepl == 1 ) { msg += "One word changed."; } else { msg += numrepl + " words changed."; } if( msg ) { msg += "\n"; alert( msg ); } if( numrepl > 0 ) { // update the text field(s) on the opener window for( var i = 0; i < this.textInputs.length; i++ ) { // this.textArea.value = this.wordWin.text; if( this.wordWin ) { if( this.wordWin.textInputs[i] ) { this.textInputs[i].value = this.wordWin.textInputs[i]; } } } // START LUDO try { this._editor.setHTML(this._editor._textArea.value); } catch (e) { // If were not in editor, just continue. } //LUDO END } // return back to the calling window this.spellCheckerWin.close(); return true; } function undo() { // skip if this is the first word! var ti = this.currentTextIndex; var wi = this.currentWordIndex if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) { this.wordWin.removeFocus( ti, wi ); // go back to the last word index that was acted upon do { // if the current word index is zero then reset the seed if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) { this.currentTextIndex--; this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1; if( this.currentWordIndex < 0 ) this.currentWordIndex = 0; } else { if( this.currentWordIndex > 0 ) { this.currentWordIndex--; } } } while ( this.wordWin.totalWords( this.currentTextIndex ) == 0 || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll ); var text_idx = this.currentTextIndex; var idx = this.currentWordIndex; var preReplSpell = this.wordWin.originalSpellings[text_idx][idx]; // if we got back to the first word then set the Undo button back to disabled if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) { this.controlWin.disableUndo(); } // examine what happened to this current word. switch( this.wordFlags[text_idx][idx] ) { // replace all: go through this and all the future occurances of the word // and revert them all to the original spelling and clear their flags case this.replAllFlag : for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) { for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { if(( i == text_idx && j >= idx ) || i > text_idx ) { var origSpell = this.wordWin.originalSpellings[i][j]; if( origSpell == preReplSpell ) { this._setWordText ( i, j, origSpell, undefined ); } } } } break; // ignore all: go through all the future occurances of the word // and clear their flags case this.ignrAllFlag : for( var i = text_idx; i < this.wordWin.textInputs.length; i++ ) { for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) { if(( i == text_idx && j >= idx ) || i > text_idx ) { var origSpell = this.wordWin.originalSpellings[i][j]; if( origSpell == preReplSpell ) { this.wordFlags[i][j] = undefined; } } } } break; // replace: revert the word to its original spelling case this.replWordFlag : this._setWordText ( text_idx, idx, preReplSpell, undefined ); break; } // For all four cases, clear the wordFlag of this word. re-start the process this.wordFlags[text_idx][idx] = undefined; this._spellcheck(); } } function _spellcheck() { var ww = this.wordWin; // check if this is the last word in the current text element if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) { this.currentTextIndex++; this.currentWordIndex = 0; // keep going if we're not yet past the last text element if( this.currentTextIndex < this.wordWin.textInputs.length ) { this._spellcheck(); return; } else { this.terminateSpell(); return; } } // if this is after the first one make sure the Undo button is enabled if( this.currentWordIndex > 0 ) { this.controlWin.enableUndo(); } // skip the current word if it has already been worked on if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) { // increment the global current word index and move on. this.currentWordIndex++; this._spellcheck(); } else { var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex ); if( evalText ) { this.controlWin.evaluatedText.value = evalText; ww.setFocus( this.currentTextIndex, this.currentWordIndex ); this._getSuggestions( this.currentTextIndex, this.currentWordIndex ); } } } function _getSuggestions( text_num, word_num ) { this.controlWin.clearSuggestions(); // add suggestion in list for each suggested word. // get the array of suggested words out of the // three-dimensional array containing all suggestions. var a_suggests = this.wordWin.suggestions[text_num][word_num]; if( a_suggests ) { // got an array of suggestions. for( var ii = 0; ii < a_suggests.length; ii++ ) { this.controlWin.addSuggestion( a_suggests[ii] ); } } this.controlWin.selectDefaultSuggestion(); } function _setAsIgnored( text_num, word_num, flag ) { // set the UI this.wordWin.removeFocus( text_num, word_num ); // do the bookkeeping this.wordFlags[text_num][word_num] = flag; return true; } function _getTotalReplaced() { var i_replaced = 0; for( var i = 0; i < this.wordFlags.length; i++ ) { for( var j = 0; j < this.wordFlags[i].length; j++ ) { if(( this.wordFlags[i][j] == this.replWordFlag ) || ( this.wordFlags[i][j] == this.replAllFlag ) || ( this.wordFlags[i][j] == this.fromReplAll )) { i_replaced++; } } } return i_replaced; } function _setWordText( text_num, word_num, newText, flag ) { // set the UI and form inputs this.wordWin.setText( text_num, word_num, newText ); // keep track of what happened to this word: this.wordFlags[text_num][word_num] = flag; return true; } function _getFormInputs( inputPattern ) { var inputs = new Array(); for( var i = 0; i < document.forms.length; i++ ) { for( var j = 0; j < document.forms[i].elements.length; j++ ) { if( document.forms[i].elements[j].type.match( inputPattern )) { inputs[inputs.length] = document.forms[i].elements[j]; } } } return inputs; }
// Miscellaneous core Javascript functions for Moodle function popupchecker(msg) { var testwindow = window.open('itestwin.html', '', 'width=1,height=1,left=0,top=0,scrollbars=no'); if (testwindow == null) {alert(msg);} else { testwindow.close(); } } /* function popUpProperties(inobj) { /// Legacy function var op = window.open(); op.document.open('text/plain'); for (objprop in inobj) { op.document.write(objprop + ' => ' + inobj[objprop] + '\n'); } op.document.close(); } function fillmessagebox(text) { /// Legacy function document.form.message.value = text; } function copyrichtext(textname) { /// Legacy stub for old editor - to be removed soon return true; } */ function checkall() { var el = document.getElementsByTagName('input'); for(var i=0; i<el.length; i++) { if(el[i].type == 'checkbox') { el[i].checked = true; } } } function checknone() { var el = document.getElementsByTagName('input'); for(var i=0; i<el.length; i++) { if(el[i].type == 'checkbox') { el[i].checked = false; } } } function lockoptions(formid, master, subitems) { // Subitems is an array of names of sub items. // Optionally, each item in subitems may have a // companion hidden item in the form with the // same name but prefixed by "h". var form = document.forms[formid]; if (eval("form."+master+".checked")) { for (i=0; i<subitems.length; i++) { unlockoption(form, subitems[i]); } } else { for (i=0; i<subitems.length; i++) { lockoption(form, subitems[i]); } } return(true); } function lockoption(form,item) { eval("form."+item+".disabled=true");/* IE thing */ if(form.elements['h'+item]) { eval("form.h"+item+".value=1"); } } function unlockoption(form,item) { eval("form."+item+".disabled=false");/* IE thing */ if(form.elements['h'+item]) { eval("form.h"+item+".value=0"); } } /** * Get the value of the 'virtual form element' with a particular name. That is, * abstracts away the difference between a normal form element, like a select * which is a single HTML element with a .value property, and a set of radio * buttons, which is several HTML elements. * * @param form a HTML form. * @param master the name of an element in that form. * @return the value of that element. */ function get_form_element_value(form, name) { var element = form[name]; if (!element) { return null; } if (element.tagName) { // Ordinarly thing like a select box. return element.value; } // Array of things, like radio buttons. for (var j = 0; j < element.length; j++) { var el = element[j]; if (el.checked) { return el.value; } } return null; } /** * Set the disabled state of the 'virtual form element' with a particular name. * This abstracts away the difference between a normal form element, like a select * which is a single HTML element with a .value property, and a set of radio * buttons, which is several HTML elements. * * @param form a HTML form. * @param master the name of an element in that form. * @param disabled the disabled state to set. */ function set_form_element_disabled(form, name, disabled) { var element = form[name]; if (!element) { return; } if (element.tagName) { // Ordinarly thing like a select box. element.disabled = disabled; } // Array of things, like radio buttons. for (var j = 0; j < element.length; j++) { var el = element[j]; el.disabled = disabled; } } /** * Set the hidden state of the 'virtual form element' with a particular name. * This abstracts away the difference between a normal form element, like a select * which is a single HTML element with a .value property, and a set of radio * buttons, which is several HTML elements. * * @param form a HTML form. * @param master the name of an element in that form. * @param hidden the hidden state to set. */ function set_form_element_hidden(form, name, hidden) { var element = form[name]; if (!element) { return; } if (element.tagName) { var el = findParentNode(element, 'DIV', 'fitem', false); if (el!=null) { el.style.display = hidden ? 'none' : ''; el.style.visibility = hidden ? 'hidden' : ''; } } // Array of things, like radio buttons. for (var j = 0; j < element.length; j++) { var el = findParentNode(element[j], 'DIV', 'fitem', false); if (el!=null) { el.style.display = hidden ? 'none' : ''; el.style.visibility = hidden ? 'hidden' : ''; } } } function lockoptionsall(formid) { var form = document.forms[formid]; var dependons = eval(formid + 'items'); var tolock = []; var tohide = []; for (var dependon in dependons) { // change for MooTools compatibility if (!dependons.propertyIsEnumerable(dependon)) { continue; } if (!form[dependon]) { continue; } for (var condition in dependons[dependon]) { for (var value in dependons[dependon][condition]) { var lock; var hide = false; switch (condition) { case 'notchecked': lock = !form[dependon].checked; break; case 'checked': lock = form[dependon].checked; break; case 'noitemselected': lock = form[dependon].selectedIndex == -1; break; case 'eq': lock = get_form_element_value(form, dependon) == value; break; case 'hide': // hide as well as disable hide = true; break; default: lock = get_form_element_value(form, dependon) != value; break; } for (var ei in dependons[dependon][condition][value]) { var eltolock = dependons[dependon][condition][value][ei]; if (hide) { tohide[eltolock] = true; } if (tolock[eltolock] != null) { tolock[eltolock] = lock || tolock[eltolock]; } else { tolock[eltolock] = lock; } } } } } for (var el in tolock) { // change for MooTools compatibility if (!tolock.propertyIsEnumerable(el)) { continue; } set_form_element_disabled(form, el, tolock[el]); if (tohide.propertyIsEnumerable(el)) { set_form_element_hidden(form, el, tolock[el]); } } return true; } function lockoptionsallsetup(formid) { var form = document.forms[formid]; var dependons = eval(formid+'items'); for (var dependon in dependons) { // change for MooTools compatibility if (!dependons.propertyIsEnumerable(dependon)) { continue; } var masters = form[dependon]; if (!masters) { continue; } if (masters.tagName) { // If master is radio buttons, we get an array, otherwise we don't. // Convert both cases to an array for convinience. masters = [masters]; } for (var j = 0; j < masters.length; j++) { master = masters[j]; master.formid = formid; master.onclick = function() {return lockoptionsall(this.formid);}; master.onblur = function() {return lockoptionsall(this.formid);}; master.onchange = function() {return lockoptionsall(this.formid);}; } } for (var i = 0; i < form.elements.length; i++) { var formelement = form.elements[i]; if (formelement.type=='reset') { formelement.formid = formid; formelement.onclick = function() {this.form.reset();return lockoptionsall(this.formid);}; formelement.onblur = function() {this.form.reset();return lockoptionsall(this.formid);}; formelement.onchange = function() {this.form.reset();return lockoptionsall(this.formid);}; } } return lockoptionsall(formid); } function submitFormById(id) { var theform = document.getElementById(id); if(!theform) { return false; } if(theform.tagName.toLowerCase() != 'form') { return false; } if(!theform.onsubmit || theform.onsubmit()) { return theform.submit(); } } function select_all_in(elTagName, elClass, elId) { var inputs = document.getElementsByTagName('input'); inputs = filterByParent(inputs, function(el) {return findParentNode(el, elTagName, elClass, elId);}); for(var i = 0; i < inputs.length; ++i) { if(inputs[i].type == 'checkbox' || inputs[i].type == 'radio') { inputs[i].checked = 'checked'; } } } function deselect_all_in(elTagName, elClass, elId) { var inputs = document.getElementsByTagName('INPUT'); inputs = filterByParent(inputs, function(el) {return findParentNode(el, elTagName, elClass, elId);}); for(var i = 0; i < inputs.length; ++i) { if(inputs[i].type == 'checkbox' || inputs[i].type == 'radio') { inputs[i].checked = ''; } } } function confirm_if(expr, message) { if(!expr) { return true; } return confirm(message); } /* findParentNode (start, elementName, elementClass, elementID) Travels up the DOM hierarchy to find a parent element with the specified tag name, class, and id. All conditions must be met, but any can be ommitted. Returns the BODY element if no match found. */ function findParentNode(el, elName, elClass, elId) { while(el.nodeName.toUpperCase() != 'BODY') { if( (!elName || el.nodeName.toUpperCase() == elName) && (!elClass || el.className.indexOf(elClass) != -1) && (!elId || el.id == elId)) { break; } el = el.parentNode; } return el; } /* findChildNode (start, elementName, elementClass, elementID) Travels down the DOM hierarchy to find all child elements with the specified tag name, class, and id. All conditions must be met, but any can be ommitted. Doesn't examine children of matches. */ function findChildNodes(start, tagName, elementClass, elementID, elementName) { var children = new Array(); for (var i = 0; i < start.childNodes.length; i++) { var classfound = false; var child = start.childNodes[i]; if((child.nodeType == 1) &&//element node type (elementClass && (typeof(child.className)=='string'))) { var childClasses = child.className.split(/\s+/); for (var childClassIndex in childClasses) { if (childClasses[childClassIndex]==elementClass) { classfound = true; break; } } } if(child.nodeType == 1) { //element node type if ( (!tagName || child.nodeName == tagName) && (!elementClass || classfound)&& (!elementID || child.id == elementID) && (!elementName || child.name == elementName)) { children = children.concat(child); } else { children = children.concat(findChildNodes(child, tagName, elementClass, elementID, elementName)); } } } return children; } /* elementSetHide (elements, hide) Adds or removes the "hide" class for the specified elements depending on boolean hide. */ function elementShowAdvanced(elements, show) { for (var elementIndex in elements) { element = elements[elementIndex]; element.className = element.className.replace(new RegExp(' ?hide'), '') if(!show) { element.className += ' hide'; } } } function showAdvancedInit(addBefore, nameAttr, buttonLabel, hideText, showText) { var showHideButton = document.createElement("input"); showHideButton.type = 'button'; showHideButton.value = buttonLabel; showHideButton.name = nameAttr; showHideButton.moodle = { hideLabel: hideText, showLabel: showText }; YAHOO.util.Event.addListener(showHideButton, 'click', showAdvancedOnClick); el = document.getElementById(addBefore); el.parentNode.insertBefore(showHideButton, el); } function showAdvancedOnClick(e) { var button = e.target ? e.target : e.srcElement; var toSet=findChildNodes(button.form, null, 'advanced'); var buttontext = ''; if (button.form.elements['mform_showadvanced_last'].value == '0' || button.form.elements['mform_showadvanced_last'].value == '' ) { elementShowAdvanced(toSet, true); buttontext = button.moodle.hideLabel; button.form.elements['mform_showadvanced_last'].value = '1'; } else { elementShowAdvanced(toSet, false); buttontext = button.moodle.showLabel; button.form.elements['mform_showadvanced_last'].value = '0'; } var formelements = button.form.elements; // Fixed MDL-10506 for (var i = 0; i < formelements.length; i++) { if (formelements[i] && formelements[i].name && (formelements[i].name=='mform_showadvanced')) { formelements[i].value = buttontext; } } //never submit the form if js is enabled. return false; } function unmaskPassword(id) { var pw = document.getElementById(id); var chb = document.getElementById(id+'unmask'); try { // first try IE way - it can not set name attribute later if (chb.checked) { var newpw = document.createElement('<input type="text" name="'+pw.name+'">'); } else { var newpw = document.createElement('<input type="password" name="'+pw.name+'">'); } newpw.attributes['class'].nodeValue = pw.attributes['class'].nodeValue; } catch (e) { var newpw = document.createElement('input'); newpw.setAttribute('name', pw.name); if (chb.checked) { newpw.setAttribute('type', 'text'); } else { newpw.setAttribute('type', 'password'); } newpw.setAttribute('class', pw.getAttribute('class')); } newpw.id = pw.id; newpw.size = pw.size; newpw.onblur = pw.onblur; newpw.onchange = pw.onchange; newpw.value = pw.value; pw.parentNode.replaceChild(newpw, pw); } /* elementToggleHide (element, elementFinder) If elementFinder is not provided, toggles the "hidden" class for the specified element. If elementFinder is provided, then the "hidden" class will be toggled for the object returned by the function call elementFinder(element). If persistent == true, also sets a cookie for this. */ function elementToggleHide(el, persistent, elementFinder, strShow, strHide) { if(!elementFinder) { var obj = el; //el:container el = document.getElementById('togglehide_'+obj.id); } else { var obj = elementFinder(el); //el:button. } if(obj.className.indexOf('hidden') == -1) { obj.className += ' hidden'; if (el.src) { el.src = el.src.replace('switch_minus', 'switch_plus'); el.alt = strShow; el.title = strShow; } var shown = 0; } else { obj.className = obj.className.replace(new RegExp(' ?hidden'), ''); if (el.src) { el.src = el.src.replace('switch_plus', 'switch_minus'); el.alt = strHide; el.title = strHide; } var shown = 1; } if(persistent == true) { new cookie('hide:' + obj.id, 1, (shown ? -1 : 356), '/').set(); } } function elementCookieHide(id, strShow, strHide) { var obj = document.getElementById(id); var cook = new cookie('hide:' + id).read(); if(cook != null) { elementToggleHide(obj, false, null, strShow, strHide); } } function filterByParent(elCollection, parentFinder) { var filteredCollection = []; for(var i = 0; i < elCollection.length; ++i) { var findParent = parentFinder(elCollection[i]); if(findParent.nodeName != 'BODY') { filteredCollection.push(elCollection[i]); } } return filteredCollection; } /* All this is here just so that IE gets to handle oversized blocks in a visually pleasing manner. It does a browser detect. So sue me. */ function fix_column_widths() { var agt = navigator.userAgent.toLowerCase(); if ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) { fix_column_width('left-column'); fix_column_width('right-column'); } } function fix_column_width(colName) { if(column = document.getElementById(colName)) { if(!column.offsetWidth) { setTimeout("fix_column_width('" + colName + "')", 20); return; } var width = 0; var nodes = column.childNodes; for(i = 0; i < nodes.length; ++i) { if(nodes[i].className.indexOf("sideblock") != -1 ) { if(width < nodes[i].offsetWidth) { width = nodes[i].offsetWidth; } } } for(i = 0; i < nodes.length; ++i) { if(nodes[i].className.indexOf("sideblock") != -1 ) { nodes[i].style.width = width + 'px'; } } } } /* Insert myValue at current cursor position */ function insertAtCursor(myField, myValue) { // IE support if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = myValue; } // Mozilla/Netscape support else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); } else { myField.value += myValue; } } /* Call instead of setting window.onload directly or setting body onload=. Adds your function to a chain of functions rather than overwriting anything that exists. */ function addonload(fn) { var oldhandler=window.onload; window.onload=function() { if(oldhandler) oldhandler(); fn(); } }
// Javascript from Moodle modules
//\///// //\ overLIB 4.21 - You may not remove or change this notice. //\ Copyright Erik Bosrup 1998-2004. All rights reserved. //\ //\ Contributors are listed on the homepage. //\ This file might be old, always check for the latest version at: //\ http://www.bosrup.com/web/overlib/ //\ //\ Please read the license agreement (available through the link above) //\ before using overLIB. Direct any licensing questions to [email protected]. //\ //\ Do not sell this as your own work or remove this copyright notice. //\ For full details on copying or changing this script please read the //\ license agreement at the link above. Please give credit on sites that //\ use overLIB and submit changes of the script so other people can use //\ them as well. // $Revision: 1.1 $ $Date: 2007/08/08 09:42:12 $ //\///// //\mini //////// // PRE-INIT // Ignore these lines, configuration is below. //////// var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1); var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4; var olHideForm=0; // parameter for hiding SELECT and ActiveX elements in IE5.5+ var olHautoFlag = 0; // flags for over-riding VAUTO and HAUTO if corresponding var olVautoFlag = 0; // positioning commands are used on the command line var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array(); // for plugins registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); //////// // DEFAULT CONFIGURATION // Settings you want everywhere are set here. All of this can also be // changed on your html page or through an overLIB call. //////// if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF"; if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399"; if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000"; if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF"; if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF"; if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica"; if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica"; if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica"; if (typeof ol_textsize=='undefined') var ol_textsize="1"; if (typeof ol_captionsize=='undefined') var ol_captionsize="1"; if (typeof ol_closesize=='undefined') var ol_closesize="1"; if (typeof ol_width=='undefined') var ol_width="200"; if (typeof ol_border=='undefined') var ol_border="1"; if (typeof ol_cellpad=='undefined') var ol_cellpad=2; if (typeof ol_offsetx=='undefined') var ol_offsetx=10; if (typeof ol_offsety=='undefined') var ol_offsety=10; if (typeof ol_text=='undefined') var ol_text="Default Text"; if (typeof ol_cap=='undefined') var ol_cap=""; if (typeof ol_sticky=='undefined') var ol_sticky=0; if (typeof ol_background=='undefined') var ol_background=""; if (typeof ol_close=='undefined') var ol_close="Close"; if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT; if (typeof ol_status=='undefined') var ol_status=""; if (typeof ol_autostatus=='undefined') var ol_autostatus=0; if (typeof ol_height=='undefined') var ol_height=-1; if (typeof ol_snapx=='undefined') var ol_snapx=0; if (typeof ol_snapy=='undefined') var ol_snapy=0; if (typeof ol_fixx=='undefined') var ol_fixx=-1; if (typeof ol_fixy=='undefined') var ol_fixy=-1; if (typeof ol_relx=='undefined') var ol_relx=null; if (typeof ol_rely=='undefined') var ol_rely=null; if (typeof ol_fgbackground=='undefined') var ol_fgbackground=""; if (typeof ol_bgbackground=='undefined') var ol_bgbackground=""; if (typeof ol_padxl=='undefined') var ol_padxl=1; if (typeof ol_padxr=='undefined') var ol_padxr=1; if (typeof ol_padyt=='undefined') var ol_padyt=1; if (typeof ol_padyb=='undefined') var ol_padyb=1; if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0; if (typeof ol_vpos=='undefined') var ol_vpos=BELOW; if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0; if (typeof ol_capicon=='undefined') var ol_capicon=""; if (typeof ol_frame=='undefined') var ol_frame=self; if (typeof ol_timeout=='undefined') var ol_timeout=0; if (typeof ol_function=='undefined') var ol_function=null; if (typeof ol_delay=='undefined') var ol_delay=0; if (typeof ol_hauto=='undefined') var ol_hauto=0; if (typeof ol_vauto=='undefined') var ol_vauto=0; if (typeof ol_closeclick=='undefined') var ol_closeclick=0; if (typeof ol_wrap=='undefined') var ol_wrap=0; if (typeof ol_followmouse=='undefined') var ol_followmouse=1; if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0; if (typeof ol_closetitle=='undefined') var ol_closetitle='Close'; if (typeof ol_compatmode=='undefined') var ol_compatmode=0; if (typeof ol_css=='undefined') var ol_css=CSSOFF; if (typeof ol_fgclass=='undefined') var ol_fgclass=""; if (typeof ol_bgclass=='undefined') var ol_bgclass=""; if (typeof ol_textfontclass=='undefined') var ol_textfontclass=""; if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass=""; if (typeof ol_closefontclass=='undefined') var ol_closefontclass=""; //////// // ARRAY CONFIGURATION //////// // You can use these arrays to store popup text here instead of in the html. if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1"); if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1"); //////// // END OF CONFIGURATION // Don't change anything below this line, all configuration is above. //////// //////// // INIT //////// // Runtime variables init. Don't change for config! var o3_text=""; var o3_cap=""; var o3_sticky=0; var o3_background=""; var o3_close="Close"; var o3_hpos=RIGHT; var o3_offsetx=2; var o3_offsety=2; var o3_fgcolor=""; var o3_bgcolor=""; var o3_textcolor=""; var o3_capcolor=""; var o3_closecolor=""; var o3_width=100; var o3_border=1; var o3_cellpad=2; var o3_status=""; var o3_autostatus=0; var o3_height=-1; var o3_snapx=0; var o3_snapy=0; var o3_fixx=-1; var o3_fixy=-1; var o3_relx=null; var o3_rely=null; var o3_fgbackground=""; var o3_bgbackground=""; var o3_padxl=0; var o3_padxr=0; var o3_padyt=0; var o3_padyb=0; var o3_fullhtml=0; var o3_vpos=BELOW; var o3_aboveheight=0; var o3_capicon=""; var o3_textfont="Verdana,Arial,Helvetica"; var o3_captionfont="Verdana,Arial,Helvetica"; var o3_closefont="Verdana,Arial,Helvetica"; var o3_textsize="1"; var o3_captionsize="1"; var o3_closesize="1"; var o3_frame=self; var o3_timeout=0; var o3_timerid=0; var o3_allowmove=0; var o3_function=null; var o3_delay=0; var o3_delayid=0; var o3_hauto=0; var o3_vauto=0; var o3_closeclick=0; var o3_wrap=0; var o3_followmouse=1; var o3_mouseoff=0; var o3_closetitle=''; var o3_compatmode=0; var o3_css=CSSOFF; var o3_fgclass=""; var o3_bgclass=""; var o3_textfontclass=""; var o3_captionfontclass=""; var o3_closefontclass=""; // Display state variables var o3_x = 0; var o3_y = 0; var o3_showingsticky = 0; var o3_removecounter = 0; // Our layer var over = null; var fnRef, hoveringSwitch = false; var olHideDelay; // Decide browser version var isMac = (navigator.userAgent.indexOf("Mac") != -1); var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode); // Opera 7 var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4); var olNs6 = (document.getElementById) ? true : false; var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent)); var olIe4 = (document.all) ? true : false; var olIe5 = false; var olIe55 = false; // Added additional variable to identify IE5.5+ var docRoot = 'document.body'; // Resize fix for NS4.x to keep track of layer if (olNs4) { var oW = window.innerWidth; var oH = window.innerHeight; window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); } } // Microsoft Stupidity Check(tm). if (olIe4) { var agent = navigator.userAgent; if (/MSIE/.test(agent)) { var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]); if (versNum >= 5){ olIe5=true; olIe55=(versNum>=5.5&&!olOp) ? true : false; if (olNs6) olNs6=false; } } if (olNs6) olIe4 = false; } // Check for compatability mode. if (document.compatMode && document.compatMode == 'CSS1Compat') { docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot); } // Add window onload handlers to indicate when all modules have been loaded // For Netscape 6+ and Mozilla, uses addEventListener method on the window object // For IE it uses the attachEvent method of the window object and for Netscape 4.x // it sets the window.onload handler to the OLonload_handler function for Bubbling if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false); else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler); var capExtent; //////// // PUBLIC FUNCTIONS //////// // overlib(arg0,...,argN) // Loads parameters into global runtime variables. function overlib() { if (!olLoaded || isExclusive(overlib.arguments)) return true; if (olCheckMouseCapture) olMouseCapture(); if (over) { over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over; cClick(); } // Load defaults to runtime. olHideDelay=0; o3_text=ol_text; o3_cap=ol_cap; o3_sticky=ol_sticky; o3_background=ol_background; o3_close=ol_close; o3_hpos=ol_hpos; o3_offsetx=ol_offsetx; o3_offsety=ol_offsety; o3_fgcolor=ol_fgcolor; o3_bgcolor=ol_bgcolor; o3_textcolor=ol_textcolor; o3_capcolor=ol_capcolor; o3_closecolor=ol_closecolor; o3_width=ol_width; o3_border=ol_border; o3_cellpad=ol_cellpad; o3_status=ol_status; o3_autostatus=ol_autostatus; o3_height=ol_height; o3_snapx=ol_snapx; o3_snapy=ol_snapy; o3_fixx=ol_fixx; o3_fixy=ol_fixy; o3_relx=ol_relx; o3_rely=ol_rely; o3_fgbackground=ol_fgbackground; o3_bgbackground=ol_bgbackground; o3_padxl=ol_padxl; o3_padxr=ol_padxr; o3_padyt=ol_padyt; o3_padyb=ol_padyb; o3_fullhtml=ol_fullhtml; o3_vpos=ol_vpos; o3_aboveheight=ol_aboveheight; o3_capicon=ol_capicon; o3_textfont=ol_textfont; o3_captionfont=ol_captionfont; o3_closefont=ol_closefont; o3_textsize=ol_textsize; o3_captionsize=ol_captionsize; o3_closesize=ol_closesize; o3_timeout=ol_timeout; o3_function=ol_function; o3_delay=ol_delay; o3_hauto=ol_hauto; o3_vauto=ol_vauto; o3_closeclick=ol_closeclick; o3_wrap=ol_wrap; o3_followmouse=ol_followmouse; o3_mouseoff=ol_mouseoff; o3_closetitle=ol_closetitle; o3_css=ol_css; o3_compatmode=ol_compatmode; o3_fgclass=ol_fgclass; o3_bgclass=ol_bgclass; o3_textfontclass=ol_textfontclass; o3_captionfontclass=ol_captionfontclass; o3_closefontclass=ol_closefontclass; setRunTimeVariables(); fnRef = ''; // Special for frame support, over must be reset... o3_frame = ol_frame; if(!(over=createDivContainer())) return false; parseTokens('o3_', overlib.arguments); if (!postParseChecks()) return false; if (o3_delay == 0) { return runHook("olMain", FREPLACE); } else { o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay); return false; } } // Clears popups if appropriate function nd(time) { if (olLoaded && !isExclusive()) { hideDelay(time); // delay popup close if time specified if (o3_removecounter >= 1) { o3_showingsticky = 0 }; if (o3_showingsticky == 0) { o3_allowmove = 0; if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over); } else { o3_removecounter++; } } return true; } // The Close onMouseOver function for stickies function cClick() { if (olLoaded) { runHook("hideObject", FREPLACE, over); o3_showingsticky = 0; } return false; } // Method for setting page specific defaults. function overlib_pagedefaults() { parseTokens('ol_', overlib_pagedefaults.arguments); } //////// // OVERLIB MAIN FUNCTION //////// // This function decides what it is we want to display and how we want it done. function olMain() { var layerhtml, styleType; runHook("olMain", FBEFORE); if (o3_background!="" || o3_fullhtml) { // Use background instead of box. layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml); } else { // They want a popup box. styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass"); // Prepare popup background if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\""; if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground); // Prepare popup colors if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor); if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor); // Prepare popup height if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height); else o3_height = ""; // Decide which kinda box. if (o3_cap=="") { // Plain layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text); } else { // With caption if (o3_sticky) { // Show close text layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close); } else { // No close text layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, ""); } } } // We want it to stick! if (o3_sticky) { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } o3_showingsticky = 1; o3_removecounter = 0; } // Created a separate routine to generate the popup to make it easier // to implement a plugin capability if (!runHook("createPopup", FREPLACE, layerhtml)) return false; // Prepare status bar if (o3_autostatus > 0) { o3_status = o3_text; if (o3_autostatus > 1) o3_status = o3_cap; } // When placing the layer the first time, even stickies may be moved. o3_allowmove = 0; // Initiate a timer for timeout if (o3_timeout > 0) { if (o3_timerid > 0) clearTimeout(o3_timerid); o3_timerid = setTimeout("cClick()", o3_timeout); } // Show layer runHook("disp", FREPLACE, o3_status); runHook("olMain", FAFTER); return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != ''); } //////// // LAYER GENERATION FUNCTIONS //////// // These functions just handle popup content with tags that should adhere to the W3C standards specification. // Makes simple table without caption function ol_content_simple(text) { var cpIsMultiple = /,/.test(o3_cellpad); var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; set_background(""); return txt; } // Makes table with caption and optional close link function ol_content_caption(text,title,close) { var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad); var closing, closeevent; closing = ""; closeevent = "onmouseover"; if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick"; if (o3_capicon != "") { nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"'; if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"'; o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />'; } if (close != "") closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>'; txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>'; set_background(""); return txt; } // Sets the background picture,padding and lots more. :) function ol_content_background(text,picture,hasfullhtml) { if (hasfullhtml) { txt=text; } else { txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>'; } set_background(picture); return txt; } // Loads a picture into the div. function set_background(pic) { if (pic == "") { if (olNs4) { over.background.src = null; } else if (over.style) { over.style.backgroundImage = "none"; } } else { if (olNs4) { over.background.src = pic; } else if (over.style) { over.style.width=o3_width + 'px'; over.style.backgroundImage = "url("+pic+")"; } } } //////// // HANDLING FUNCTIONS //////// var olShowId=-1; // Displays the popup function disp(statustext) { runHook("disp", FBEFORE); if (o3_allowmove == 0) { runHook("placeLayer", FREPLACE); (olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over); o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1; } runHook("disp", FAFTER); if (statustext != "") self.status = statustext; } // Creates the actual popup structure function createPopup(lyrContent){ runHook("createPopup", FBEFORE); if (o3_wrap) { var wd,ww,theObj = (olNs4 ? over : over.style); theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); layerWrite(lyrContent); wd = (olNs4 ? over.clip.width : over.offsetWidth); if (wd > (ww=windowWidth())) { lyrContent=lyrContent.replace(/\ /g, ' '); o3_width=ww; o3_wrap=0; } } layerWrite(lyrContent); // Have to set o3_width for placeLayer() routine if o3_wrap is turned on if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth); runHook("createPopup", FAFTER, lyrContent); return true; } // Decides where we want the popup. function placeLayer() { var placeX, placeY, widthFix = 0; // HORIZONTAL PLACEMENT, re-arranged to work in Safari if (o3_frame.innerWidth) widthFix=18; iwidth = windowWidth(); // Horizontal scroll offset winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset; placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); // VERTICAL PLACEMENT, re-arranged to work in Safari if (o3_frame.innerHeight) { iheight=o3_frame.innerHeight; } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { iheight=eval('o3_frame.'+docRoot+'.clientHeight'); } // Vertical scroll offset scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset; placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); // Actually move the object. repositionTo(over, placeX, placeY); } // Moves the layer function olMouseMove(e) { var e = (e) ? e : event; if (e.pageX) { o3_x = e.pageX; o3_y = e.pageY; } else if (e.clientX) { o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft'); o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop'); } if (o3_allowmove == 1) runHook("placeLayer", FREPLACE); // MouseOut handler if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) { (olHideDelay ? hideDelay(olHideDelay) : cClick()); hoveringSwitch = !hoveringSwitch; } } // Fake function for 3.0 users. function no_overlib() { return ver3fix; } // Capture the mouse and chain other scripts. function olMouseCapture() { capExtent = document; var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove; var re = /function[ ]*(\w*)\(/; wMv = (!olIe4 && window.onmousemove); if (document.onmousemove || wMv) { if (wMv) capExtent = window; f = capExtent.onmousemove.toString(); fN = f.match(re); if (fN == null) { str = f+'(e); '; } else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) { if (!olOp && wMv) { l = f.indexOf('{')+1; k = f.lastIndexOf('}'); sS = f.substring(l,k); if ((l = sS.indexOf('(')) != -1) { sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,''); if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null; else str = sS + '(e);'; } } if (!str) { olCheckMouseCapture = false; return; } } else { if (fN[1]) str = fN[1]+'(e); '; else { l = f.indexOf('{')+1; k = f.lastIndexOf('}'); str = f.substring(l,k) + '\n'; } } str += 'olMouseMove(e); '; mseHandler = new Function('e', str); } capExtent.onmousemove = mseHandler; if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE); } //////// // PARSING FUNCTIONS //////// // Does the actual command parsing. function parseTokens(pf, ar) { // What the next argument is expected to be. var v, i, mode=-1, par = (pf != 'ol_'); var fnMark = (par && !ar.length ? 1 : 0); for (i = 0; i < ar.length; i++) { if (mode < 0) { // Arg is maintext,unless its a number between pmStart and pmUpper // then its a command. if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) { fnMark = (par ? 1 : 0); i--; // backup one so that the next block can parse it } else { switch(pf) { case 'ol_': ol_text = ar[i].toString(); break; default: o3_text=ar[i].toString(); } } mode = 0; } else { // Note: NS4 doesn't like switch cases with vars. if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; } if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; } if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; } if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; } if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; } if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; } if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; } if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; } if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; } if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; } if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; } if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; } if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; } if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; } if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; } if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; } if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; } if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; } if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; } if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again. if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; } if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; } if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; } if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; } if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; } if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; } if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; } if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; } if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; } if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; } if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; } if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; } if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; } if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; } if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; } if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; } if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; } if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i]; opt_FUNCTION(v); } continue; } if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; } if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; } if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; } if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; } if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; } if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; } if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; } if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; } if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; } if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; } if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; } if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; } if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; } if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; } if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; } i = parseCmdLine(pf, i, ar); } } if (fnMark && o3_function) o3_text = o3_function(); if ((pf == 'o3_') && o3_wrap) { o3_width = 0; var tReg=/<.*\n*>/ig; if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, ' '); if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, ' '); } if ((pf == 'o3_') && o3_sticky) { if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close; if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' '); } } //////// // LAYER FUNCTIONS //////// // Writes to a layer function layerWrite(txt) { txt += "\n"; if (olNs4) { var lyr = o3_frame.document.layers['overDiv'].document lyr.write(txt) lyr.close() } else if (typeof over.innerHTML != 'undefined') { if (olIe5 && isMac) over.innerHTML = ''; over.innerHTML = txt; } else { range = o3_frame.document.createRange(); range.setStartAfter(over); domfrag = range.createContextualFragment(txt); while (over.hasChildNodes()) { over.removeChild(over.lastChild); } over.appendChild(domfrag); } } // Make an object visible function showObject(obj) { runHook("showObject", FBEFORE); var theObj=(olNs4 ? obj : obj.style); theObj.visibility = 'visible'; runHook("showObject", FAFTER); } // Hides an object function hideObject(obj) { runHook("hideObject", FBEFORE); var theObj=(olNs4 ? obj : obj.style); if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; } theObj.visibility = 'hidden'; theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); if (o3_timerid > 0) clearTimeout(o3_timerid); if (o3_delayid > 0) clearTimeout(o3_delayid); o3_timerid = 0; o3_delayid = 0; self.status = ""; if (obj.onmouseout||obj.onmouseover) { if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER); obj.onmouseout = obj.onmouseover = null; } runHook("hideObject", FAFTER); } // Move a layer function repositionTo(obj, xL, yL) { var theObj=(olNs4 ? obj : obj.style); theObj.left = xL + (!olNs4 ? 'px' : 0); theObj.top = yL + (!olNs4 ? 'px' : 0); } // Check position of cursor relative to overDiv DIVision; mouseOut function function cursorOff() { var left = parseInt(over.style.left); var top = parseInt(over.style.top); var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true; return false; } //////// // COMMAND FUNCTIONS //////// // Calls callme or the default function. function opt_FUNCTION(callme) { o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function')); return 0; } // Handle hovering function opt_NOCLOSE(unused) { if (!unused) o3_close = ""; if (olNs4) { over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER); over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } } over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); } } else { over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } } } return 0; } // Function to scan command line arguments for multiples function opt_MULTIPLEARGS(i, args, parameter) { var k=i, re, pV, str=''; for(k=i; k<args.length; k++) { if(typeof args[k] == 'number' && args[k]>pmStart) break; str += args[k] + ','; } if (str) str = str.substring(0,--str.length); k--; // reduce by one so the for loop this is in works correctly pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str; eval(parameter + '="' + pV + '"'); return k; } // Remove in texts when done. function nbspCleanup() { if (o3_wrap) { o3_text = o3_text.replace(/\ /g, ' '); o3_cap = o3_cap.replace(/\ /g, ' '); } } // Escape embedded single quotes in text strings function escSglQuote(str) { return str.toString().replace(/'/g,"\\'"); } // Onload handler for window onload event function OLonLoad_handler(e) { var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i; if(!olLoaded) olLoaded=1; // Remove it for Gecko based browsers if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false); else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick() window.detachEvent("onload",OLonLoad_handler); var fN = document.body.getAttribute('onload'); if (fN) { fN=fN.toString().match(re); if (fN && fN.length) { for (i=0; i<fN.length; i++) { if (/anonymous/.test(fN[i])) continue; while((l=fN[i].search(/\)[;\s]+/)) != -1) { fn=fN[i].substring(0,l+1); fN[i] = fN[i].substring(l+2); if (olre.test(fn)) eval(fn); } } } } } } // Wraps strings in Layer Generation Functions with the correct tags // endWrap true(if end tag) or false if start tag // fontSizeStr - font size string such as '1' or '10px' // whichString is being wrapped -- 'text', 'caption', or 'close' function wrapStr(endWrap,fontSizeStr,whichString) { var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr); fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr; if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>'; else { fontStr='o3_'+whichString+'font'; fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color'; return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">'; } } // Quotes Multi word font names; needed for CSS Standards adherence in font-family function quoteMultiNameFonts(theFont) { var v, pM=theFont.split(','); for (var i=0; i<pM.length; i++) { v=pM[i]; v=v.replace(/^\s+/,'').replace(/\s+$/,''); if(/\s/.test(v) && !/['"]/.test(v)) { v="\'"+v+"\'"; pM[i]=v; } } return pM.join(); } // dummy function which will be overridden function isExclusive(args) { return false; } // Sets cellpadding style string value function setCellPadStr(parameter) { var Str='', j=0, ary = new Array(), top, bottom, left, right; Str+='padding: '; ary=parameter.replace(/\s+/g,'').split(','); switch(ary.length) { case 2: top=bottom=ary[j]; left=right=ary[++j]; break; case 3: top=ary[j]; left=right=ary[++j]; bottom=ary[++j]; break; case 4: top=ary[j]; right=ary[++j]; bottom=ary[++j]; left=ary[++j]; break; } Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;'); return Str; } // function will delay close by time milliseconds function hideDelay(time) { if (time&&!o3_delay) { if (o3_timerid > 0) clearTimeout(o3_timerid); o3_timerid=setTimeout("cClick()",(o3_timeout=time)); } } // Was originally in the placeLayer() routine; separated out for future ease function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) { var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount; var parsedWidth = parseInt(o3_width); if (o3_fixx > -1 || o3_relx != null) { // Fixed position placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx); } else { // If HAUTO, decide what to use. if (o3_hauto == 1) { if ((o3_x - winoffset) > (iwidth / 2)) { o3_hpos = LEFT; } else { o3_hpos = RIGHT; } } // From mouse if (o3_hpos == CENTER) { // Center placeX = o3_x+o3_offsetx-(parsedWidth/2); if (placeX < winoffset) placeX = winoffset; } if (o3_hpos == RIGHT) { // Right placeX = o3_x+o3_offsetx; if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) { placeX = iwidth+winoffset - parsedWidth - widthFix; if (placeX < 0) placeX = 0; } } if (o3_hpos == LEFT) { // Left placeX = o3_x-o3_offsetx-parsedWidth; if (placeX < winoffset) placeX = winoffset; } // Snapping! if (o3_snapx > 1) { var snapping = placeX % o3_snapx; if (o3_hpos == LEFT) { placeX = placeX - (o3_snapx+snapping); } else { // CENTER and RIGHT placeX = placeX+(o3_snapx - snapping); } if (placeX < winoffset) placeX = winoffset; } } return placeX; } // was originally in the placeLayer() routine; separated out for future ease function verticalPlacement(browserHeight,verticalScrollAmount) { var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount; var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight)); if (o3_fixy > -1 || o3_rely != null) { // Fixed position placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy); } else { // If VAUTO, decide what to use. if (o3_vauto == 1) { if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) { o3_vpos = ABOVE; } else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) { o3_vpos = BELOW; } } // From mouse if (o3_vpos == ABOVE) { if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; placeY = o3_y - (o3_aboveheight+o3_offsety); if (placeY < scrolloffset) placeY = scrolloffset; } else { // BELOW placeY = o3_y+o3_offsety; } // Snapping! if (o3_snapy > 1) { var snapping = placeY % o3_snapy; if (o3_aboveheight > 0 && o3_vpos == ABOVE) { placeY = placeY - (o3_snapy+snapping); } else { placeY = placeY+(o3_snapy - snapping); } if (placeY < scrolloffset) placeY = scrolloffset; } } return placeY; } // checks positioning flags function checkPositionFlags() { if (olHautoFlag) olHautoFlag = o3_hauto=0; if (olVautoFlag) olVautoFlag = o3_vauto=0; return true; } // get Browser window width function windowWidth() { var w; if (o3_frame.innerWidth) w=o3_frame.innerWidth; else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) w=eval('o3_frame.'+docRoot+'.clientWidth'); return w; } // create the div container for popup content if it doesn't exist function createDivContainer(id,frm,zValue) { id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000); var objRef, divContainer = layerReference(id); if (divContainer == null) { if (olNs4) { divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm); objRef = divContainer; } else { var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]); if (olIe4&&!document.getElementById) { body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>'); divContainer=layerReference(id); } else { divContainer = frm.document.createElement("DIV"); divContainer.id = id; body.appendChild(divContainer); } objRef = divContainer.style; } objRef.position = 'absolute'; objRef.visibility = 'hidden'; objRef.zIndex = zValue; if (olIe4&&!olOp) objRef.left = objRef.top = '0px'; else objRef.left = objRef.top = -10000 + (!olNs4 ? 'px' : 0); } return divContainer; } // get reference to a layer with ID=id function layerReference(id) { return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id))); } //////// // UTILITY FUNCTIONS //////// // Checks if something is a function. function isFunction(fnRef) { var rtn = true; if (typeof fnRef == 'object') { for (var i = 0; i < fnRef.length; i++) { if (typeof fnRef[i]=='function') continue; rtn = false; break; } } else if (typeof fnRef != 'function') { rtn = false; } return rtn; } // Converts an array into an argument string for use in eval. function argToString(array, strtInd, argName) { var jS = strtInd, aS = '', ar = array; argName=(argName ? argName : 'ar'); if (ar.length > jS) { for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], '; aS = aS.substring(0, aS.length-2); } return aS; } // Places a hook in the correct position in a hook point. function reOrder(hookPt, fnRef, order) { var newPt = new Array(), match, i, j; if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt; if (typeof order=='function') { if (typeof fnRef=='object') { newPt = newPt.concat(fnRef); } else { newPt[newPt.length++]=fnRef; } for (i = 0; i < hookPt.length; i++) { match = false; if (typeof fnRef == 'function' && hookPt[i] == fnRef) { continue; } else { for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) { match = true; break; } } if (!match) newPt[newPt.length++] = hookPt[i]; } newPt[newPt.length++] = order; } else if (typeof order == 'object') { if (typeof fnRef == 'object') { newPt = newPt.concat(fnRef); } else { newPt[newPt.length++] = fnRef; } for (j = 0; j < hookPt.length; j++) { match = false; if (typeof fnRef == 'function' && hookPt[j] == fnRef) { continue; } else { for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) { match = true; break; } } if (!match) newPt[newPt.length++]=hookPt[j]; } for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i]; newPt.length = 0; for (j = 0; j < hookPt.length; j++) { match = false; for (i = 0; i < order.length; i++) { if (hookPt[j] == order[i]) { match = true; break; } } if (!match) newPt[newPt.length++] = hookPt[j]; } newPt = newPt.concat(order); } hookPt = newPt; return hookPt; } //////// // PLUGIN ACTIVATION FUNCTIONS //////// // Runs plugin functions to set runtime variables. function setRunTimeVariables(){ if (typeof runTime != 'undefined' && runTime.length) { for (var k = 0; k < runTime.length; k++) { runTime[k](); } } } // Runs plugin functions to parse commands. function parseCmdLine(pf, i, args) { if (typeof cmdLine != 'undefined' && cmdLine.length) { for (var k = 0; k < cmdLine.length; k++) { var j = cmdLine[k](pf, i, args); if (j >- 1) { i = j; break; } } } return i; } // Runs plugin functions to do things after parse. function postParseChecks(pf,args){ if (typeof postParse != 'undefined' && postParse.length) { for (var k = 0; k < postParse.length; k++) { if (postParse[k](pf,args)) continue; return false; // end now since have an error } } return true; } //////// // PLUGIN REGISTRATION FUNCTIONS //////// // Registers commands and creates constants. function registerCommands(cmdStr) { if (typeof cmdStr!='string') return; var pM = cmdStr.split(','); pms = pms.concat(pM); for (var i = 0; i< pM.length; i++) { eval(pM[i].toUpperCase()+'='+pmCount++); } } // Registers no-parameter commands function registerNoParameterCommands(cmdStr) { if (!cmdStr && typeof cmdStr != 'string') return; pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr; } // Register a function to hook at a certain point. function registerHook(fnHookTo, fnRef, hookType, optPm) { var hookPt, last = typeof optPm; if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return; if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference(); hookPt = hookPts[fnHookTo]; if (hookType != null) { if (hookType == FREPLACE) { hookPt.ovload = fnRef; // replace normal overlib routine if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; } else if (hookType == FBEFORE || hookType == FAFTER) { var hookPt=(hookType == 1 ? hookPt.before : hookPt.after); if (typeof fnRef == 'object') { hookPt = hookPt.concat(fnRef); } else { hookPt[hookPt.length++] = fnRef; } if (optPm) hookPt = reOrder(hookPt, fnRef, optPm); } else if (hookType == FALTERNATE) { if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef; } else if (hookType == FCHAIN) { hookPt = hookPt.chain; if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions else hookPt[hookPt.length++]=fnRef; } return; } } // Register a function that will set runtime variables. function registerRunTimeFunction(fn) { if (isFunction(fn)) { if (typeof fn == 'object') { runTime = runTime.concat(fn); } else { runTime[runTime.length++] = fn; } } } // Register a function that will handle command parsing. function registerCmdLineFunction(fn){ if (isFunction(fn)) { if (typeof fn == 'object') { cmdLine = cmdLine.concat(fn); } else { cmdLine[cmdLine.length++] = fn; } } } // Register a function that does things after command parsing. function registerPostParseFunction(fn){ if (isFunction(fn)) { if (typeof fn == 'object') { postParse = postParse.concat(fn); } else { postParse[postParse.length++] = fn; } } } //////// // PLUGIN REGISTRATION FUNCTIONS //////// // Runs any hooks registered. function runHook(fnHookTo, hookType) { var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments; if (hookType == FREPLACE) { arS = argToString(ar, 2); if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')'); else rtnVal = eval('l('+arS+')'); } else if (hookType == FBEFORE || hookType == FAFTER) { if (typeof l != 'undefined') { l=(hookType == 1 ? l.before : l.after); if (l.length) { arS = argToString(ar, 2); for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')'); } } } else if (hookType == FALTERNATE) { optPm = ar[2]; arS = argToString(ar, 3); if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') { rtnVal = eval(fnHookTo+'('+arS+')'); } else { rtnVal = eval('l('+arS+')'); } } else if (hookType == FCHAIN) { arS=argToString(ar,2); l=l.chain; for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break; } return rtnVal; } //////// // OBJECT CONSTRUCTORS //////// // Object for handling hooks. function FunctionReference() { this.ovload = null; this.before = new Array(); this.after = new Array(); this.alt = new Array(); this.chain = new Array(); } // Object for simple access to the overLIB version used. // Examples: simpleversion:351 major:3 minor:5 revision:1 function Info(version, prerelease) { this.version = version; this.prerelease = prerelease; this.simpleversion = Math.round(this.version*100); this.major = parseInt(this.simpleversion / 100); this.minor = parseInt(this.simpleversion / 10) - this.major * 10; this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10; this.meets = meets; } // checks for Core Version required function meets(reqdVersion) { return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion)); } //////// // STANDARD REGISTRATIONS //////// registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF); registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF); registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF); registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS); registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS); registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS); registerPostParseFunction(checkPositionFlags); registerHook("hideObject", nbspCleanup, FAFTER); registerHook("horizontalPlacement", horizontalPlacement, FCHAIN); registerHook("verticalPlacement", verticalPlacement, FCHAIN); if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1; registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); /////// // ESTABLISH MOUSECAPTURING /////// // Capture events, alt. diffuses the overlib function. var olCheckMouseCapture=true; if ((olNs4 || olNs6 || olIe4)) { olMouseCapture(); } else { overlib = no_overlib; nd = no_overlib; ver3fix = true; }
//\///// //\ overLIB CSS Style Plugin //\ This file requires overLIB 4.10 or later. //\ //\ overLIB 4.05 - You may not remove or change this notice. //\ Copyright Erik Bosrup 1998-2004. All rights reserved. //\ Contributors are listed on the homepage. //\ See http://www.bosrup.com/web/overlib/ for details. // $Revision: 1.1 $ $Date: 2007/08/08 09:42:12 $ //\///// //\mini //////// // PRE-INIT // Ignore these lines, configuration is below. //////// if (typeof olInfo == 'undefined' || typeof olInfo.meets == 'undefined' || !olInfo.meets(4.10)) alert('overLIB 4.10 or later is required for the CSS Style Plugin.'); else { registerCommands('cssstyle,padunit,heightunit,widthunit,textsizeunit,textdecoration,textstyle,textweight,captionsizeunit,captiondecoration,captionstyle,captionweight,closesizeunit,closedecoration,closestyle,closeweight'); //////// // DEFAULT CONFIGURATION // Settings you want everywhere are set here. All of this can also be // changed on your html page or through an overLIB call. //////// if (typeof ol_padunit=='undefined') var ol_padunit="px"; if (typeof ol_heightunit=='undefined') var ol_heightunit="px"; if (typeof ol_widthunit=='undefined') var ol_widthunit="px"; if (typeof ol_textsizeunit=='undefined') var ol_textsizeunit="px"; if (typeof ol_textdecoration=='undefined') var ol_textdecoration="none"; if (typeof ol_textstyle=='undefined') var ol_textstyle="normal"; if (typeof ol_textweight=='undefined') var ol_textweight="normal"; if (typeof ol_captionsizeunit=='undefined') var ol_captionsizeunit="px"; if (typeof ol_captiondecoration=='undefined') var ol_captiondecoration="none"; if (typeof ol_captionstyle=='undefined') var ol_captionstyle="normal"; if (typeof ol_captionweight=='undefined') var ol_captionweight="bold"; if (typeof ol_closesizeunit=='undefined') var ol_closesizeunit="px"; if (typeof ol_closedecoration=='undefined') var ol_closedecoration="none"; if (typeof ol_closestyle=='undefined') var ol_closestyle="normal"; if (typeof ol_closeweight=='undefined') var ol_closeweight="normal"; //////// // END OF CONFIGURATION // Don't change anything below this line, all configuration is above. //////// //////// // INIT //////// // Runtime variables init. Don't change for config! var o3_padunit="px"; var o3_heightunit="px"; var o3_widthunit="px"; var o3_textsizeunit="px"; var o3_textdecoration=""; var o3_textstyle=""; var o3_textweight=""; var o3_captionsizeunit="px"; var o3_captiondecoration=""; var o3_captionstyle=""; var o3_captionweight=""; var o3_closesizeunit="px"; var o3_closedecoration=""; var o3_closestyle=""; var o3_closeweight=""; //////// // PLUGIN FUNCTIONS //////// // Function which sets runtime variables to their default values function setCSSStyleVariables() { o3_padunit=ol_padunit; o3_heightunit=ol_heightunit; o3_widthunit=ol_widthunit; o3_textsizeunit=ol_textsizeunit; o3_textdecoration=ol_textdecoration; o3_textstyle=ol_textstyle; o3_textweight=ol_textweight; o3_captionsizeunit=ol_captionsizeunit; o3_captiondecoration=ol_captiondecoration; o3_captionstyle=ol_captionstyle; o3_captionweight=ol_captionweight; o3_closesizeunit=ol_closesizeunit; o3_closedecoration=ol_closedecoration; o3_closestyle=ol_closestyle; o3_closeweight=ol_closeweight; } // Parses CSS Style commands. function parseCSSStyleExtras(pf, i, ar) { var k = i; if (k < ar.length) { if (ar[k]==CSSSTYLE) { eval(pf+'css='+ar[k]); return k; } if (ar[k]==PADUNIT) { eval(pf+'padunit="'+ar[++k]+'"'); return k; } if (ar[k]==HEIGHTUNIT) { eval(pf+'heightunit="'+ar[++k]+'"'); return k; } if (ar[k]==WIDTHUNIT) { eval(pf+'widthunit="'+ar[++k]+'"'); return k; } if (ar[k]==TEXTSIZEUNIT) { eval(pf+'textsizeunit="'+ar[++k]+'"'); return k; } if (ar[k]==TEXTDECORATION) { eval(pf+'textdecoration="'+ar[++k]+'"'); return k; } if (ar[k]==TEXTSTYLE) { eval(pf+'textstyle="'+ar[++k]+'"'); return k; } if (ar[k]==TEXTWEIGHT) { eval(pf+'textweight="'+ar[++k]+'"'); return k; } if (ar[k]==CAPTIONSIZEUNIT) { eval(pf+'captionsizeunit="'+ar[++k]+'"'); return k; } if (ar[k]==CAPTIONDECORATION) { eval(pf+'captiondecoration="'+ar[++k]+'"'); return k; } if (ar[k]==CAPTIONSTYLE) { eval(pf+'captionstyle="'+ar[++k]+'"'); return k; } if (ar[k]==CAPTIONWEIGHT) { eval(pf+'captionweight="'+ar[++k]+'"'); return k; } if (ar[k]==CLOSESIZEUNIT) { eval(pf+'closesizeunit="'+ar[++k]+'"'); return k; } if (ar[k]==CLOSEDECORATION) { eval(pf+'closedecoration="'+ar[++k]+'"'); return k; } if (ar[k]==CLOSESTYLE) { eval(pf+'closestyle="'+ar[++k]+'"'); return k; } if (ar[k]==CLOSEWEIGHT) { eval(pf+'closeweight="'+ar[++k]+'"'); return k; } } return -1; } //////// // LAYER GENERATION FUNCTIONS //////// // Makes simple table without caption function ol_content_simple_cssstyle(text) { txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="' + o3_cellpad + '" cellspacing="0" style="color: '+o3_fgcolor+'; background-color: '+o3_fgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+'; text-decoration: '+o3_textdecoration+'; font-weight: '+o3_textweight+'; font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>'; set_background(""); return txt; } // Makes table with caption and optional close link function ol_content_caption_cssstyle(text, title, close) { var nameId; closing = ""; closeevent = "onMouseOver"; if (o3_closeclick == 1) closeevent= (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onClick"; if (o3_capicon!="") { nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"'; if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId = ' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"'; o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />'; } if (close != "") { closing = '<td align="RIGHT"><a href="javascript:return '+fnRef+'cClick();" '+closeevent+'="return '+fnRef+'cClick();" style="color: '+o3_closecolor+'; font-family: '+o3_closefont+'; font-size: '+o3_closesize+o3_closesizeunit+'; text-decoration: '+o3_closedecoration+'; font-weight: '+o3_closeweight+'; font-style:'+o3_closestyle+';">'+close+'</a></td>'; } txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" style="background-color: '+o3_bgcolor+'; background-image: url('+o3_bgbackground+'); height: '+o3_height+o3_heightunit+';"><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td><font style="font-family: '+o3_captionfont+'; color: '+o3_capcolor+'; font-size: '+o3_captionsize+o3_captionsizeunit+'; font-weight: '+o3_captionweight+'; font-style: '+o3_captionstyle+'; text-decoration: '+o3_captiondecoration+';">'+o3_capicon+title+'</font></td>'+closing+'</tr></table><table width="100%" border="0" cellpadding="' + o3_cellpad + '" cellspacing="0" style="color: '+o3_fgcolor+'; background-color: '+o3_fgcolor+'; height: '+o3_height+o3_heightunit+';"><tr><td valign="TOP"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+'; text-decoration: '+o3_textdecoration+'; font-weight: '+o3_textweight+'; font-style:'+o3_textstyle+'">'+text+'</font></td></tr></table></td></tr></table>'; set_background(""); return txt; } // Sets the background picture, padding and lots more. :) function ol_content_background_cssstyle(text, picture, hasfullhtml) { if (hasfullhtml) { txt = text; } else { var pU, hU, wU; pU = (o3_padunit == '%' ? '%' : ''); hU = (o3_heightunit == '%' ? '%' : ''); wU = (o3_widthunit == '%' ? '%' : ''); txt = '<table width="'+o3_width+wu+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+hu+'"><tr><td colspan="3" height="'+o3_padyt+pu+'"></td></tr><tr><td width="'+o3_padxl+pu+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+pu+'"><font style="font-family: '+o3_textfont+'; color: '+o3_textcolor+'; font-size: '+o3_textsize+o3_textsizeunit+';">'+text+'</font></td><td width="'+o3_padxr+pu+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+pu+'"></td></tr></table>'; } set_background(picture); return txt; } //////// // PLUGIN REGISTRATIONS //////// registerRunTimeFunction(setCSSStyleVariables); registerCmdLineFunction(parseCSSStyleExtras); registerHook("ol_content_simple", ol_content_simple_cssstyle, FALTERNATE, CSSSTYLE); registerHook("ol_content_caption", ol_content_caption_cssstyle, FALTERNATE, CSSSTYLE); registerHook("ol_content_background", ol_content_background_cssstyle, FALTERNATE, CSSSTYLE); }
/******************************************************* COOKIE FUNCTIONALITY Based on "Night of the Living Cookie" by Bill Dortch (c) 2003, Ryan Parman http://www.skyzyx.com Distributed according to SkyGPL 2.1, http://www.skyzyx.com/license/ *******************************************************/ function cookie(name, value, expires, path, domain, secure) { // Passed Values this.name=name; this.value=value; this.expires=expires; this.path=path; this.domain=domain; this.secure=secure; // Read cookie this.read=function() { // To allow for faster parsing var ck=document.cookie; var arg = this.name + "="; var alen = arg.length; var clen = ck.length; var i = 0; while (i < clen) { var j = i + alen; if (ck.substring(i, j) == arg) { var endstr = ck.indexOf (";", j); if (endstr == -1) endstr = ck.length; return unescape(ck.substring(j, endstr)); } i = ck.indexOf(" ", i) + 1; if (i == 0) break; } return null; } // Set cookie this.set=function() { // Store initial value of "this.expires" for re-initialization. expStore=this.expires; // Set time to absolute zero. exp = new Date(); base = new Date(0); skew = base.getTime(); if (skew > 0) exp.setTime (exp.getTime() - skew); exp.setTime(exp.getTime() + (this.expires*24*60*60*1000)); this.expires=exp; document.cookie = this.name + "=" + escape (this.value) + ((this.expires) ? "; expires=" + this.expires.toGMTString() : "") + ((this.path) ? "; path=" + this.path : "") + ((this.domain) ? "; domain=" + this.domain : "") + ((this.secure) ? "; secure" : ""); // Re-initialize this.expires=expStore; } // Kill cookie this.kill=function() { document.cookie = this.name + "=" + ((this.path) ? "; path=" + this.path : "") + ((this.domain) ? "; domain=" + this.domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } // Change cookie settings. this.changeName=function(chName) { this.kill(); this.name=chName; this.set(); } this.changeVal=function(chVal) { this.kill(); this.value=chVal; this.set(); } this.changeExp=function(chExp) { this.kill(); this.expires=chExp; this.set(); } this.changePath=function(chPath) { this.kill(); this.path=chPath; this.set(); } this.changeDomain=function(chDom) { this.kill(); this.domain=chDom; this.set(); } this.changeSecurity=function(chSec) { this.kill(); this.secure=chSec; this.set(); } }
/* Unobtrusive Flash Objects (UFO) v3.22 <http://www.bobbyvandersluis.com/ufo/> Copyright 2005-2007 Bobby van der Sluis This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/> CONTAINS MINOR CHANGE FOR MOODLE (bottom code for MDL-9825) */ var UFO = { req: ["movie", "width", "height", "majorversion", "build"], opt: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess", "seamlesstabbing", "allowfullscreen", "allownetworking"], optAtt: ["id", "name", "align"], optExc: ["swliveconnect"], ximovie: "ufo.swf", xiwidth: "215", xiheight: "138", ua: navigator.userAgent.toLowerCase(), pluginType: "", fv: [0,0], foList: [], create: function(FO, id) { if (!UFO.uaHas("w3cdom") || UFO.uaHas("ieMac")) return; UFO.getFlashVersion(); UFO.foList[id] = UFO.updateFO(FO); UFO.createCSS("#" + id, "visibility:hidden;"); UFO.domLoad(id); }, updateFO: function(FO) { if (typeof FO.xi != "undefined" && FO.xi == "true") { if (typeof FO.ximovie == "undefined") FO.ximovie = UFO.ximovie; if (typeof FO.xiwidth == "undefined") FO.xiwidth = UFO.xiwidth; if (typeof FO.xiheight == "undefined") FO.xiheight = UFO.xiheight; } FO.mainCalled = false; return FO; }, domLoad: function(id) { var _t = setInterval(function() { if ((document.getElementsByTagName("body")[0] != null || document.body != null) && document.getElementById(id) != null) { UFO.main(id); clearInterval(_t); } }, 250); if (typeof document.addEventListener != "undefined") { document.addEventListener("DOMContentLoaded", function() { UFO.main(id); clearInterval(_t); } , null); // Gecko, Opera 9+ } }, main: function(id) { var _fo = UFO.foList[id]; if (_fo.mainCalled) return; UFO.foList[id].mainCalled = true; document.getElementById(id).style.visibility = "hidden"; if (UFO.hasRequired(id)) { if (UFO.hasFlashVersion(parseInt(_fo.majorversion, 10), parseInt(_fo.build, 10))) { if (typeof _fo.setcontainercss != "undefined" && _fo.setcontainercss == "true") UFO.setContainerCSS(id); UFO.writeSWF(id); } else if (_fo.xi == "true" && UFO.hasFlashVersion(6, 65)) { UFO.createDialog(id); } } document.getElementById(id).style.visibility = "visible"; }, createCSS: function(selector, declaration) { var _h = document.getElementsByTagName("head")[0]; var _s = UFO.createElement("style"); if (!UFO.uaHas("ieWin")) _s.appendChild(document.createTextNode(selector + " {" + declaration + "}")); // bugs in IE/Win _s.setAttribute("type", "text/css"); _s.setAttribute("media", "screen"); _h.appendChild(_s); if (UFO.uaHas("ieWin") && document.styleSheets && document.styleSheets.length > 0) { var _ls = document.styleSheets[document.styleSheets.length - 1]; if (typeof _ls.addRule == "object") _ls.addRule(selector, declaration); } }, setContainerCSS: function(id) { var _fo = UFO.foList[id]; var _w = /%/.test(_fo.width) ? "" : "px"; var _h = /%/.test(_fo.height) ? "" : "px"; UFO.createCSS("#" + id, "width:" + _fo.width + _w +"; height:" + _fo.height + _h +";"); if (_fo.width == "100%") { UFO.createCSS("body", "margin-left:0; margin-right:0; padding-left:0; padding-right:0;"); } if (_fo.height == "100%") { UFO.createCSS("html", "height:100%; overflow:hidden;"); UFO.createCSS("body", "margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0; height:100%;"); } }, createElement: function(el) { return (UFO.uaHas("xml") && typeof document.createElementNS != "undefined") ? document.createElementNS("http://www.w3.org/1999/xhtml", el) : document.createElement(el); }, createObjParam: function(el, aName, aValue) { var _p = UFO.createElement("param"); _p.setAttribute("name", aName); _p.setAttribute("value", aValue); el.appendChild(_p); }, uaHas: function(ft) { var _u = UFO.ua; switch(ft) { case "w3cdom": return (typeof document.getElementById != "undefined" && typeof document.getElementsByTagName != "undefined" && (typeof document.createElement != "undefined" || typeof document.createElementNS != "undefined")); case "xml": var _m = document.getElementsByTagName("meta"); var _l = _m.length; for (var i = 0; i < _l; i++) { if (/content-type/i.test(_m[i].getAttribute("http-equiv")) && /xml/i.test(_m[i].getAttribute("content"))) return true; } return false; case "ieMac": return /msie/.test(_u) && !/opera/.test(_u) && /mac/.test(_u); case "ieWin": return /msie/.test(_u) && !/opera/.test(_u) && /win/.test(_u); case "gecko": return /gecko/.test(_u) && !/applewebkit/.test(_u); case "opera": return /opera/.test(_u); case "safari": return /applewebkit/.test(_u); default: return false; } }, getFlashVersion: function() { if (UFO.fv[0] != 0) return; if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { UFO.pluginType = "npapi"; var _d = navigator.plugins["Shockwave Flash"].description; if (typeof _d != "undefined") { _d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10); var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0; UFO.fv = [_m, _r]; } } else if (window.ActiveXObject) { UFO.pluginType = "ax"; try { // avoid fp 6 crashes var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch(e) { try { var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); UFO.fv = [6, 0]; _a.AllowScriptAccess = "always"; // throws if fp < 6.47 } catch(e) { if (UFO.fv[0] == 6) return; } try { var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch(e) {} } if (typeof _a == "object") { var _d = _a.GetVariable("$version"); // bugs in fp 6.21/6.23 if (typeof _d != "undefined") { _d = _d.replace(/^\S+\s+(.*)$/, "$1").split(","); UFO.fv = [parseInt(_d[0], 10), parseInt(_d[2], 10)]; } } } }, hasRequired: function(id) { var _l = UFO.req.length; for (var i = 0; i < _l; i++) { if (typeof UFO.foList[id][UFO.req[i]] == "undefined") return false; } return true; }, hasFlashVersion: function(major, release) { return (UFO.fv[0] > major || (UFO.fv[0] == major && UFO.fv[1] >= release)) ? true : false; }, writeSWF: function(id) { var _fo = UFO.foList[id]; var _e = document.getElementById(id); if (UFO.pluginType == "npapi") { if (UFO.uaHas("gecko") || UFO.uaHas("xml")) { while(_e.hasChildNodes()) { _e.removeChild(_e.firstChild); } var _obj = UFO.createElement("object"); _obj.setAttribute("type", "application/x-shockwave-flash"); _obj.setAttribute("data", _fo.movie); _obj.setAttribute("width", _fo.width); _obj.setAttribute("height", _fo.height); var _l = UFO.optAtt.length; for (var i = 0; i < _l; i++) { if (typeof _fo[UFO.optAtt[i]] != "undefined") _obj.setAttribute(UFO.optAtt[i], _fo[UFO.optAtt[i]]); } var _o = UFO.opt.concat(UFO.optExc); var _l = _o.length; for (var i = 0; i < _l; i++) { if (typeof _fo[_o[i]] != "undefined") UFO.createObjParam(_obj, _o[i], _fo[_o[i]]); } _e.appendChild(_obj); } else { var _emb = ""; var _o = UFO.opt.concat(UFO.optAtt).concat(UFO.optExc); var _l = _o.length; for (var i = 0; i < _l; i++) { if (typeof _fo[_o[i]] != "undefined") _emb += ' ' + _o[i] + '="' + _fo[_o[i]] + '"'; } _e.innerHTML = '<embed type="application/x-shockwave-flash" src="' + _fo.movie + '" width="' + _fo.width + '" height="' + _fo.height + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + _emb + '></embed>'; } } else if (UFO.pluginType == "ax") { var _objAtt = ""; var _l = UFO.optAtt.length; for (var i = 0; i < _l; i++) { if (typeof _fo[UFO.optAtt[i]] != "undefined") _objAtt += ' ' + UFO.optAtt[i] + '="' + _fo[UFO.optAtt[i]] + '"'; } var _objPar = ""; var _l = UFO.opt.length; for (var i = 0; i < _l; i++) { if (typeof _fo[UFO.opt[i]] != "undefined") _objPar += '<param name="' + UFO.opt[i] + '" value="' + _fo[UFO.opt[i]] + '" />'; } var _p = window.location.protocol == "https:" ? "https:" : "http:"; _e.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + _objAtt + ' width="' + _fo.width + '" height="' + _fo.height + '" codebase="' + _p + '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + _fo.majorversion + ',0,' + _fo.build + ',0"><param name="movie" value="' + _fo.movie + '" />' + _objPar + '</object>'; } }, createDialog: function(id) { var _fo = UFO.foList[id]; UFO.createCSS("html", "height:100%; overflow:hidden;"); UFO.createCSS("body", "height:100%; overflow:hidden;"); UFO.createCSS("#xi-con", "position:absolute; left:0; top:0; z-index:1000; width:100%; height:100%; background-color:#fff; filter:alpha(opacity:75); opacity:0.75;"); UFO.createCSS("#xi-dia", "position:absolute; left:50%; top:50%; margin-left: -" + Math.round(parseInt(_fo.xiwidth, 10) / 2) + "px; margin-top: -" + Math.round(parseInt(_fo.xiheight, 10) / 2) + "px; width:" + _fo.xiwidth + "px; height:" + _fo.xiheight + "px;"); var _b = document.getElementsByTagName("body")[0]; var _c = UFO.createElement("div"); _c.setAttribute("id", "xi-con"); var _d = UFO.createElement("div"); _d.setAttribute("id", "xi-dia"); _c.appendChild(_d); _b.appendChild(_c); var _mmu = window.location; if (UFO.uaHas("xml") && UFO.uaHas("safari")) { var _mmd = document.getElementsByTagName("title")[0].firstChild.nodeValue = document.getElementsByTagName("title")[0].firstChild.nodeValue.slice(0, 47) + " - Flash Player Installation"; } else { var _mmd = document.title = document.title.slice(0, 47) + " - Flash Player Installation"; } var _mmp = UFO.pluginType == "ax" ? "ActiveX" : "PlugIn"; var _uc = typeof _fo.xiurlcancel != "undefined" ? "&xiUrlCancel=" + _fo.xiurlcancel : ""; var _uf = typeof _fo.xiurlfailed != "undefined" ? "&xiUrlFailed=" + _fo.xiurlfailed : ""; UFO.foList["xi-dia"] = { movie:_fo.ximovie, width:_fo.xiwidth, height:_fo.xiheight, majorversion:"6", build:"65", flashvars:"MMredirectURL=" + _mmu + "&MMplayerType=" + _mmp + "&MMdoctitle=" + _mmd + _uc + _uf }; UFO.writeSWF("xi-dia"); }, expressInstallCallback: function() { var _b = document.getElementsByTagName("body")[0]; var _c = document.getElementById("xi-con"); _b.removeChild(_c); UFO.createCSS("body", "height:auto; overflow:auto;"); UFO.createCSS("html", "height:auto; overflow:auto;"); }, cleanupIELeaks: function() { var _o = document.getElementsByTagName("object"); var _l = _o.length for (var i = 0; i < _l; i++) { _o[i].style.display = "none"; var j = 0; for (var x in _o[i]) { j++; if (typeof _o[i][x] == "function") { _o[i][x] = null; } if (j > 1000) { // something is wrong, probably infinite loop caused by embedded html file // see MDL-9825 break; } } } } }; if (typeof window.attachEvent != "undefined" && UFO.uaHas("ieWin")) { window.attachEvent("onunload", UFO.cleanupIELeaks); }
/**** Author: Jerome Mouneyrac Bug Reference: http://tracker.moodle.org/browse/MDL-14439 IE and Opera fire the onchange when ever you move into a dropdwown list with the keyboard. These functions fix this problem. ****/ /* global variables Note: if I didn't use global variables, we would need to pass them as parameter: => in initSelect(): I would write "theSelect.onchange = selectChanged(...);" This code causes a javascript error on IE. (not firefox) so I had to write theSelect.onchange = selectChanged; It's why I use global variables . Because I use global variables, I didn't put this code in javascript-static.js. This file is loaded in javascript.php. */ var select_formid; var select_targetwindow; //we redefine all user actions on the dropdown list //onfocus, onchange, onkeydown, and onclick function initSelect(formId,targetWindow) { //initialise global variables select_formid=formId; select_targetwindow=targetWindow; var theSelect = document.getElementById(select_formid+"_jump"); theSelect.changed = false; theSelect.initValue = theSelect.value; theSelect.onchange = selectChanged; theSelect.onkeydown = selectKeyed; theSelect.onclick = selectClicked; return true; } function selectChanged(theElement) { var theSelect; if (theElement && theElement.value) { theSelect = theElement; } else { theSelect = this; } if (!theSelect.changed) { return false; } //here is the onchange redirection select_targetwindow.location=document.getElementById(select_formid).jump.options[document.getElementById(select_formid).jump.selectedIndex].value; return true; } function selectClicked() { this.changed = true; } //we keep Firefox behaviors: onchange is fired when we press "Enter", "Esc", or "Tab"" keys. //note that is probably not working on Mac (keyCode could be different) function selectKeyed(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && this.value != this.initValue) { this.changed = true; selectChanged(this); } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; } else { this.changed = false; } return true; }
// htmlArea v3.0 - Copyright (c) 2002, 2003 interactivetools.com, inc. // This copyright notice MUST stay intact for use (see license.txt). // // Portions (c) dynarch.com, 2003-2004 // // A free WYSIWYG editor replacement for <textarea> fields. // For full source code and docs, visit http://www.interactivetools.com/ // // Version 3.0 developed by Mihai Bazon. // http://dynarch.com/mishoo // // $Id: htmlarea.php,v 1.24.2.8 2009/08/27 03:21:33 jerome Exp $ if (typeof _editor_url == "string") { // Leave exactly one backslash at the end of _editor_url _editor_url = _editor_url.replace(/\x2f*$/, '/'); } else { //alert("WARNING: _editor_url is not set! You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea', but it can be relative if you prefer. Further we will try to load the editor files correctly but we'll probably fail."); _editor_url = 'http://lms.chartercollege.edu/lib/editor/htmlarea/';// we need relative path to site root for editor in pages wit hrequired https } // make sure we have a language if (typeof _editor_lang == "string") { _editor_lang = "en"; // should always be english in moodle. } else { _editor_lang = "en"; } // Creates a new HTMLArea object. Tries to replace the textarea with the given // ID with it. function HTMLArea(textarea, config) { if (HTMLArea.checkSupportedBrowser()) { if (typeof config == "undefined") { this.config = new HTMLArea.Config(); } else { this.config = config; } this._htmlArea = null; this._textArea = textarea; this._editMode = "wysiwyg"; this.plugins = {}; this._timerToolbar = null; this._timerUndo = null; this._undoQueue = new Array(this.config.undoSteps); this._undoPos = -1; this._customUndo = true; this._mdoc = document; // cache the document, we need it in plugins this.doctype = ''; this.dropdowns = []; // Array of select elements in the toolbar } }; // load some scripts (function() { var scripts = HTMLArea._scripts = [ _editor_url + "htmlarea.js", _editor_url + "dialog.js", _editor_url + "popupwin.js" ]; var head = document.getElementsByTagName("head")[0]; // start from 1, htmlarea.js is already loaded for (var i = 1; i < scripts.length; ++i) { var script = document.createElement("script"); script.src = scripts[i]; head.appendChild(script); } })(); // cache some regexps HTMLArea.RE_tagName = /(<\/|<)\s*([^ \t\n>]+)/ig; HTMLArea.RE_doctype = /(<!doctype((.|\n)*?)>)\n?/i; HTMLArea.RE_head = /<head>((.|\n)*?)<\/head>/i; HTMLArea.RE_body = /<body>((.|\n)*?)<\/body>/i; HTMLArea.RE_blocktag = /^(h1|h2|h3|h4|h5|h6|p|address|pre)$/i; HTMLArea.RE_junktag = /^\/($|\/)/; // Hopefully a complete list of tags that MSIEs parser will consider // as possible content tags. Retrieved from // http://www.echoecho.com/htmlreference.htm HTMLArea.RE_msietag = /^\/?(a|abbr|acronym|address|applet|area|b|base|basefont|bdo|bgsound|big|blink|blockquote|body|br|button|caption|center|cite|code|col|colgroup|comment|dd|del|dfn|dir|div|dl|dt|em|embed|fieldset|font|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|hr|html|i|iframe|ilayer|img|input|ins|isindex|kbd|keygen|label|layer|legend|li|link|map|marquee|menu|meta|multicol|nobr|noembed|noframes|nolayer|noscript|object|ol|optgroup|option|p|param|plaintext|pre|q|s|samp|script|select|server|small|spacer|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var)$/i HTMLArea.Config = function () { this.version = "3.0"; this.width = "auto"; this.height = "auto"; // enable creation of a status bar? this.statusBar = true; // maximum size of the undo queue this.undoSteps = 20; // the time interval at which undo samples are taken this.undoTimeout = 500; // 1/2 sec. // the next parameter specifies whether the toolbar should be included // in the size or not. this.sizeIncludesToolbar = true; // if true then HTMLArea will retrieve the full HTML, starting with the // <HTML> tag. this.fullPage = false; // style included in the iframe document this.pageStyle = "body { background-color: #fff; font-family: 'Times New Roman', Times; } \n .lang { background-color: #dee; }"; // set to true if you want Word code to be cleaned upon Paste this.killWordOnPaste = true; // BaseURL included in the iframe document this.baseURL = document.baseURI || document.URL; if (this.baseURL && this.baseURL.match(/(.*)\/([^\/]+)/)) this.baseURL = RegExp.$1 + "/"; // URL-s this.imgURL = "images/"; this.popupURL = "popups/"; this.toolbar = [ [ "fontname", "space", "fontsize", "space", "formatblock", "space", "language", "space", "bold", "italic", "underline", "strikethrough", "separator", "subscript", "superscript", "separator", "clean", "separator", "undo", "redo" ], [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator", "lefttoright", "righttoleft", "separator", "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator", "forecolor", "hilitecolor", "separator", "inserthorizontalrule", "createanchor", "createlink", "unlink", "nolink", "separator", "insertimage", "inserttable", "insertsmile", "insertchar", "search_replace", "separator","spellcheck", "separator", "htmlmode", "separator", "popupeditor"] ]; this.fontname = { "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' }; this.fontsize = { "1 (8 pt)": "1", "2 (10 pt)": "2", "3 (12 pt)": "3", "4 (14 pt)": "4", "5 (18 pt)": "5", "6 (24 pt)": "6", "7 (36 pt)": "7" }; this.formatblock = { "":"", "Heading 1": "h1", "Heading 2": "h2", "Heading 3": "h3", "Heading 4": "h4", "Heading 5": "h5", "Heading 6": "h6", "Normal": "p", "Address": "address", "Preformatted": "pre" }; this.language = { "Lang":"", "aa": "aa","ab": "ab","ae": "ae","af": "af","am": "am","ar": "ar","as": "as","ay": "ay","az": "az","ba": "ba","be": "be","bg": "bg","bh": "bh","bi": "bi","bn": "bn","bo": "bo","br": "br","bs": "bs","ca": "ca","ce": "ce","ch": "ch","co": "co","cs": "cs","cu": "cu","cv": "cv","cy": "cy","da": "da","de": "de","dz": "dz","el": "el","en": "en","eo": "eo","es": "es","et": "et","eu": "eu","fa": "fa","fi": "fi","fj": "fj","fo": "fo","fr": "fr","fy": "fy","ga": "ga","gd": "gd","gl": "gl","gn": "gn","gu": "gu","gv": "gv","ha": "ha","he": "he","hi": "hi","ho": "ho","hr": "hr","hu": "hu","hy": "hy","hz": "hz","ia": "ia","id": "id","ie": "ie","ik": "ik","is": "is","it": "it","iu": "iu","ja": "ja","jw": "jw","ka": "ka","ki": "ki","kj": "kj","kk": "kk","kl": "kl","km": "km","kn": "kn","ko": "ko","ks": "ks","ku": "ku","kv": "kv","kw": "kw","ky": "ky","la": "la","lb": "lb","ln": "ln","lo": "lo","lt": "lt","lv": "lv","mg": "mg","mh": "mh","mi": "mi","mk": "mk","ml": "ml","mn": "mn","mo": "mo","mr": "mr","ms": "ms","mt": "mt","my": "my","na": "na","nb": "nb","nd": "nd","ne": "ne","ng": "ng","nl": "nl","nn": "nn","no": "no","nr": "nr","nv": "nv","ny": "ny","oc": "oc","om": "om","or": "or","os": "os","pa": "pa","ph": "ph","pi": "pi","pl": "pl","ps": "ps","pt": "pt","pt-br": "pt-br","qu": "qu","rm": "rm","rn": "rn","ro": "ro","ru": "ru","rw": "rw","sa": "sa","sc": "sc","sd": "sd","se": "se","sg": "sg","si": "si","sk": "sk","sl": "sl","sm": "sm","sn": "sn","so": "so","sq": "sq","sr": "sr","ss": "ss","st": "st","su": "su","sv": "sv","sw": "sw","ta": "ta","te": "te","tg": "tg","th": "th","tk": "tk","tl": "tl","tn": "tn","tr": "tr","ts": "ts","tt": "tt","tw": "tw","ty": "ty","ug": "ug","uk": "uk","ur": "ur","uz": "uz","vi": "vi","vo": "vo","wo": "wo","xh": "xh","yi": "yi","za": "za","zh": "zh","zu": "zu","Multi": "multi","aa ": "aa_ML","ab ": "ab_ML","ae ": "ae_ML","af ": "af_ML","am ": "am_ML","ar ": "ar_ML","as ": "as_ML","ay ": "ay_ML","az ": "az_ML","ba ": "ba_ML","be ": "be_ML","bg ": "bg_ML","bh ": "bh_ML","bi ": "bi_ML","bn ": "bn_ML","bo ": "bo_ML","br ": "br_ML","bs ": "bs_ML","ca ": "ca_ML","ce ": "ce_ML","ch ": "ch_ML","co ": "co_ML","cs ": "cs_ML","cu ": "cu_ML","cv ": "cv_ML","cy ": "cy_ML","da ": "da_ML","de ": "de_ML","dz ": "dz_ML","el ": "el_ML","en ": "en_ML","eo ": "eo_ML","es ": "es_ML","et ": "et_ML","eu ": "eu_ML","fa ": "fa_ML","fi ": "fi_ML","fj ": "fj_ML","fo ": "fo_ML","fr ": "fr_ML","fy ": "fy_ML","ga ": "ga_ML","gd ": "gd_ML","gl ": "gl_ML","gn ": "gn_ML","gu ": "gu_ML","gv ": "gv_ML","ha ": "ha_ML","he ": "he_ML","hi ": "hi_ML","ho ": "ho_ML","hr ": "hr_ML","hu ": "hu_ML","hy ": "hy_ML","hz ": "hz_ML","ia ": "ia_ML","id ": "id_ML","ie ": "ie_ML","ik ": "ik_ML","is ": "is_ML","it ": "it_ML","iu ": "iu_ML","ja ": "ja_ML","jw ": "jw_ML","ka ": "ka_ML","ki ": "ki_ML","kj ": "kj_ML","kk ": "kk_ML","kl ": "kl_ML","km ": "km_ML","kn ": "kn_ML","ko ": "ko_ML","ks ": "ks_ML","ku ": "ku_ML","kv ": "kv_ML","kw ": "kw_ML","ky ": "ky_ML","la ": "la_ML","lb ": "lb_ML","ln ": "ln_ML","lo ": "lo_ML","lt ": "lt_ML","lv ": "lv_ML","mg ": "mg_ML","mh ": "mh_ML","mi ": "mi_ML","mk ": "mk_ML","ml ": "ml_ML","mn ": "mn_ML","mo ": "mo_ML","mr ": "mr_ML","ms ": "ms_ML","mt ": "mt_ML","my ": "my_ML","na ": "na_ML","nb ": "nb_ML","nd ": "nd_ML","ne ": "ne_ML","ng ": "ng_ML","nl ": "nl_ML","nn ": "nn_ML","no ": "no_ML","nr ": "nr_ML","nv ": "nv_ML","ny ": "ny_ML","oc ": "oc_ML","om ": "om_ML","or ": "or_ML","os ": "os_ML","pa ": "pa_ML","ph ": "ph_ML","pi ": "pi_ML","pl ": "pl_ML","ps ": "ps_ML","pt ": "pt_ML","pt-br ": "pt-br_ML","qu ": "qu_ML","rm ": "rm_ML","rn ": "rn_ML","ro ": "ro_ML","ru ": "ru_ML","rw ": "rw_ML","sa ": "sa_ML","sc ": "sc_ML","sd ": "sd_ML","se ": "se_ML","sg ": "sg_ML","si ": "si_ML","sk ": "sk_ML","sl ": "sl_ML","sm ": "sm_ML","sn ": "sn_ML","so ": "so_ML","sq ": "sq_ML","sr ": "sr_ML","ss ": "ss_ML","st ": "st_ML","su ": "su_ML","sv ": "sv_ML","sw ": "sw_ML","ta ": "ta_ML","te ": "te_ML","tg ": "tg_ML","th ": "th_ML","tk ": "tk_ML","tl ": "tl_ML","tn ": "tn_ML","tr ": "tr_ML","ts ": "ts_ML","tt ": "tt_ML","tw ": "tw_ML","ty ": "ty_ML","ug ": "ug_ML","uk ": "uk_ML","ur ": "ur_ML","uz ": "uz_ML","vi ": "vi_ML","vo ": "vo_ML","wo ": "wo_ML","xh ": "xh_ML","yi ": "yi_ML","za ": "za_ML","zh ": "zh_ML","zu ": "zu_ML" }; this.customSelects = {}; function cut_copy_paste(e, cmd, obj) { e.execCommand(cmd); }; this.btnList = { bold: [ "Bold", "ed_format_bold.gif", false, function(e) {e.execCommand("bold");} ], italic: [ "Italic", "ed_format_italic.gif", false, function(e) {e.execCommand("italic");} ], underline: [ "Underline", "ed_format_underline.gif", false, function(e) {e.execCommand("underline");} ], strikethrough: [ "Strikethrough", "ed_format_strike.gif", false, function(e) {e.execCommand("strikethrough");} ], subscript: [ "Subscript", "ed_format_sub.gif", false, function(e) {e.execCommand("subscript");} ], superscript: [ "Superscript", "ed_format_sup.gif", false, function(e) {e.execCommand("superscript");} ], justifyleft: [ "Justify Left", "ed_align_left.gif", false, function(e) {e.execCommand("justifyleft");} ], justifycenter: [ "Justify Center", "ed_align_center.gif", false, function(e) {e.execCommand("justifycenter");} ], justifyright: [ "Justify Right", "ed_align_right.gif", false, function(e) {e.execCommand("justifyright");} ], justifyfull: [ "Justify Full", "ed_align_justify.gif", false, function(e) {e.execCommand("justifyfull");} ], insertorderedlist: [ "Ordered List", "ed_list_num.gif", false, function(e) {e.execCommand("insertorderedlist");} ], insertunorderedlist: [ "Bulleted List", "ed_list_bullet.gif", false, function(e) {e.execCommand("insertunorderedlist");} ], outdent: [ "Decrease Indent", "ed_indent_less.gif", false, function(e) {e.execCommand("outdent");} ], indent: [ "Increase Indent", "ed_indent_more.gif", false, function(e) {e.execCommand("indent");} ], forecolor: [ "Font Color", "ed_color_fg.gif", false, function(e) {e.execCommand("forecolor");} ], hilitecolor: [ "Background Color", "ed_color_bg.gif", false, function(e) {e.execCommand("hilitecolor");} ], inserthorizontalrule: [ "Horizontal Rule", "ed_hr.gif", false, function(e) {e.execCommand("inserthorizontalrule");} ], createanchor: [ "Create anchor", "ed_anchor.gif", false, function(e) {e.execCommand("createanchor", true);} ], createlink: [ "Insert Web Link", "ed_link.gif", false, function(e) {e.execCommand("createlink", true);} ], unlink: [ "Remove Link", "ed_unlink.gif", false, function(e) {e.execCommand("unlink");} ], nolink: [ "No link", "ed_nolink.gif", false, function(e) {e.execCommand("nolink");} ], insertimage: [ "Insert/Modify Image", "ed_image.gif", false, function(e) {e.execCommand("insertimage");} ], inserttable: [ "Insert Table", "insert_table.gif", false, function(e) {e.execCommand("inserttable");} ], htmlmode: [ "Toggle HTML Source", "ed_html.gif", true, function(e) {e.execCommand("htmlmode");} ], popupeditor: [ "Enlarge Editor", "fullscreen_maximize.gif", true, function(e) {e.execCommand("popupeditor");} ], about: [ "About this editor", "ed_about.gif", true, function(e) {e.execCommand("about");} ], showhelp: [ "Help using editor", "ed_help.gif", true, function(e) {e.execCommand("showhelp");} ], undo: [ "Undoes your last action", "ed_undo.gif", false, function(e) {e.execCommand("undo");} ], redo: [ "Redoes your last action", "ed_redo.gif", false, function(e) {e.execCommand("redo");} ], clean: [ "Clean Word HTML", "ed_wordclean.gif", false, function(e) {e.execCommand("killword"); }], lefttoright: [ "Direction left to right", "ed_left_to_right.gif", false, function(e) {e.execCommand("lefttoright");} ], righttoleft: [ "Direction right to left", "ed_right_to_left.gif", false, function(e) {e.execCommand("righttoleft");} ], spellcheck: ["Spell-check", "spell-check.gif", false, spellClickHandler ], insertsmile: ["Insert Smiley", "em.icon.smile.gif", false, function(e) {e.execCommand("insertsmile");} ], insertchar: [ "Insert Char", "icon_ins_char.gif", false, function(e) {e.execCommand("insertchar");} ], search_replace: [ "Search and replace", "ed_replace.gif", false, function(e) {e.execCommand("searchandreplace");} ] }; // initialize tooltips from the I18N module and generate correct image path for (var i in this.btnList) { var btn = this.btnList[i]; btn[1] = _editor_url + this.imgURL + btn[1]; if (typeof HTMLArea.I18N.tooltips[i] != "undefined") { btn[0] = HTMLArea.I18N.tooltips[i]; } } }; HTMLArea.Config.prototype.registerButton = function(id, tooltip, image, textMode, action, context) { var the_id; if (typeof id == "string") { the_id = id; } else if (typeof id == "object") { the_id = id.id; } else { alert("ERROR [HTMLArea.Config::registerButton]:\ninvalid arguments"); return false; } // check for existing id if (typeof this.customSelects[the_id] != "undefined") { // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists."); } if (typeof this.btnList[the_id] != "undefined") { // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists."); } switch (typeof id) { case "string": this.btnList[id] = [ tooltip, image, textMode, action, context ]; break; case "object": this.btnList[id.id] = [ id.tooltip, id.image, id.textMode, id.action, id.context ]; break; } }; HTMLArea.Config.prototype.registerDropdown = function(object) { // check for existing id if (typeof this.customSelects[object.id] != "undefined") { // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists."); } if (typeof this.btnList[object.id] != "undefined") { // alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists."); } this.customSelects[object.id] = object; }; HTMLArea.Config.prototype.hideSomeButtons = function(remove) { var toolbar = this.toolbar; for (var i in toolbar) { var line = toolbar[i]; for (var j = line.length; --j >= 0; ) { if (remove.indexOf(" " + line[j] + " ") >= 0) { var len = 1; if (/separator|space/.test(line[j + 1])) { len = 2; } line.splice(j, len); } } } }; /** Helper function: replace all TEXTAREA-s in the document with HTMLArea-s. */ HTMLArea.replaceAll = function(config) { var tas = document.getElementsByTagName("textarea"); for (var i = tas.length; i > 0; (new HTMLArea(tas[--i], config)).generate()); }; /** Helper function: replaces the TEXTAREA with the given ID with HTMLArea. */ HTMLArea.replace = function(id, config) { var ta = HTMLArea.getElementById("textarea", id); return ta ? (new HTMLArea(ta, config)).generate() : null; }; // Creates the toolbar and appends it to the _htmlarea HTMLArea.prototype._createToolbar = function () { var editor = this; // to access this in nested functions var toolbar = document.createElement("div"); this._toolbar = toolbar; toolbar.className = "toolbar"; toolbar.unselectable = "1"; var tb_row = null; var tb_objects = new Object(); this._toolbarObjects = tb_objects; // creates a new line in the toolbar function newLine() { var table = document.createElement("table"); table.border = "0px"; table.cellSpacing = "0px"; table.cellPadding = "0px"; toolbar.appendChild(table); // TBODY is required for IE, otherwise you don't see anything // in the TABLE. var tb_body = document.createElement("tbody"); table.appendChild(tb_body); tb_row = document.createElement("tr"); tb_body.appendChild(tb_row); }; // END of function: newLine // init first line newLine(); function setButtonStatus(id, newval) { var oldval = this[id]; var el = this.element; if (oldval != newval) { switch (id) { case "enabled": if (newval) { HTMLArea._removeClass(el, "buttonDisabled"); el.disabled = false; } else { HTMLArea._addClass(el, "buttonDisabled"); el.disabled = true; } break; case "active": if (newval) { HTMLArea._addClass(el, "buttonPressed"); } else { HTMLArea._removeClass(el, "buttonPressed"); } break; } this[id] = newval; } }; // END of function: setButtonStatus function createSelect(txt) { var options = null; var el = null; var cmd = null; var customSelects = editor.config.customSelects; var context = null; switch (txt) { case "fontsize": case "fontname": case "formatblock": case "language": options = editor.config[txt]; cmd = txt; break; default: // try to fetch it from the list of registered selects cmd = txt; var dropdown = customSelects[cmd]; if (typeof dropdown != "undefined") { options = dropdown.options; context = dropdown.context; } else { alert("ERROR [createSelect]:\nCan't find the requested dropdown definition"); } break; } if (options) { el = document.createElement("select"); var obj = { name : txt, // field name element : el, // the UI element (SELECT) enabled : true, // is it enabled? text : false, // enabled in text mode? cmd : cmd, // command ID state : setButtonStatus, // for changing state context : context }; tb_objects[txt] = obj; for (var i in options) { var op = document.createElement("option"); op.appendChild(document.createTextNode(i)); op.value = options[i]; el.appendChild(op); } HTMLArea._addEvent(el, "change", function () { editor._comboSelected(el, txt); }); } editor.dropdowns[txt] = el; // Keep track of the element for keyboard // access later. return el; }; // END of function: createSelect // appends a new button to toolbar function createButton(txt) { // the element that will be created var el = null; var btn = null; switch (txt) { case "separator": el = document.createElement("div"); el.className = "separator"; break; case "space": el = document.createElement("div"); el.className = "space"; break; case "linebreak": newLine(); return false; case "textindicator": el = document.createElement("div"); el.appendChild(document.createTextNode("A")); el.className = "indicator"; el.title = HTMLArea.I18N.tooltips.textindicator; var obj = { name : txt, // the button name (i.e. 'bold') element : el, // the UI element (DIV) enabled : true, // is it enabled? active : false, // is it pressed? text : false, // enabled in text mode? cmd : "textindicator", // the command ID state : setButtonStatus // for changing state }; tb_objects[txt] = obj; break; default: btn = editor.config.btnList[txt]; } if (!el && btn) { el = document.createElement("div"); el.title = btn[0]; el.className = "button"; // let's just pretend we have a button object, and // assign all the needed information to it. var obj = { name : txt, // the button name (i.e. 'bold') element : el, // the UI element (DIV) enabled : true, // is it enabled? active : false, // is it pressed? text : btn[2], // enabled in text mode? cmd : btn[3], // the command ID state : setButtonStatus, // for changing state context : btn[4] || null // enabled in a certain context? }; tb_objects[txt] = obj; // handlers to emulate nice flat toolbar buttons HTMLArea._addEvent(el, "mouseover", function () { if (obj.enabled) { HTMLArea._addClass(el, "buttonHover"); } }); HTMLArea._addEvent(el, "mouseout", function () { if (obj.enabled) with (HTMLArea) { _removeClass(el, "buttonHover"); _removeClass(el, "buttonActive"); (obj.active) && _addClass(el, "buttonPressed"); } }); HTMLArea._addEvent(el, "mousedown", function (ev) { if (obj.enabled) with (HTMLArea) { _addClass(el, "buttonActive"); _removeClass(el, "buttonPressed"); _stopEvent(is_ie ? window.event : ev); } }); // when clicked, do the following: HTMLArea._addEvent(el, "click", function (ev) { if (obj.enabled) with (HTMLArea) { _removeClass(el, "buttonActive"); _removeClass(el, "buttonHover"); obj.cmd(editor, obj.name, obj); _stopEvent(is_ie ? window.event : ev); } }); var img = document.createElement("img"); img.src = btn[1]; img.style.width = "18px"; img.style.height = "18px"; el.appendChild(img); } else if (!el) { el = createSelect(txt); } if (el) { var tb_cell = document.createElement("td"); tb_row.appendChild(tb_cell); tb_cell.appendChild(el); } else { alert("FIXME: Unknown toolbar item: " + txt); } return el; }; var first = true; for (var i in this.config.toolbar) { if (this.config.toolbar.propertyIsEnumerable(i)) { // fix for prototype.js compatibility if (!first) { createButton("linebreak"); } else { first = false; } var group = this.config.toolbar[i]; for (var j in group) { if (group.propertyIsEnumerable(j)) { // fix for prototype.js compatibility var code = group[j]; if (/^([IT])\[(.*?)\]/.test(code)) { // special case, create text label var l7ed = RegExp.$1 == "I"; // localized? var label = RegExp.$2; if (l7ed) { label = HTMLArea.I18N.custom[label]; } var tb_cell = document.createElement("td"); tb_row.appendChild(tb_cell); tb_cell.className = "label"; tb_cell.innerHTML = label; } else { createButton(code); } } } } } this._htmlArea.appendChild(toolbar); }; HTMLArea.prototype._createStatusBar = function() { var statusbar = document.createElement("div"); statusbar.className = "statusBar"; this._htmlArea.appendChild(statusbar); this._statusBar = statusbar; // statusbar.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": ")); // creates a holder for the path view div = document.createElement("span"); div.className = "statusBarTree"; div.innerHTML = HTMLArea.I18N.msg["Path"] + ": "; this._statusBarTree = div; this._statusBar.appendChild(div); if (!this.config.statusBar) { // disable it... statusbar.style.display = "none"; } }; // Creates the HTMLArea object and replaces the textarea with it. HTMLArea.prototype.generate = function () { var editor = this; // we'll need "this" in some nested functions // get the textarea var textarea = this._textArea; if (typeof textarea == "string") { // it's not element but ID this._textArea = textarea = HTMLArea.getElementById("textarea", textarea); } // Fix for IE's sticky bug. Editor doesn't load // editing area. var height; if ( textarea.offsetHeight && textarea.offsetHeight > 0 ) { height = textarea.offsetHeight; } else { height = 300; } this._ta_size = { w: textarea.offsetWidth, h: height }; textarea.style.display = "none"; // create the editor framework var htmlarea = document.createElement("div"); htmlarea.className = "htmlarea"; this._htmlArea = htmlarea; // insert the editor before the textarea. //Bug fix - unless the textarea is nested within its label, in which case insert editor before label. if (textarea.parentNode.nodeName.toLowerCase()=='label') { textarea.parentNode.parentNode.insertBefore(htmlarea,textarea.parentNode); } else { textarea.parentNode.insertBefore(htmlarea, textarea); } if (textarea.form) { // we have a form, on submit get the HTMLArea content and // update original textarea. var f = textarea.form; if (typeof f.onsubmit == "function") { var funcref = f.onsubmit; if (typeof f.__msh_prevOnSubmit == "undefined") { f.__msh_prevOnSubmit = []; } f.__msh_prevOnSubmit.push(funcref); } f.onsubmit = function() { // Moodle hack. Bug fix #2736 var test = editor.getHTML(); test = test.replace(/<br \/>/gi, ''); test = test.replace(/\ \;/gi, ''); test = test.trim(); //alert(test + test.length); if (test.length < 1) { editor._textArea.value = test.trim(); } else { editor._textArea.value = editor.getHTML(); } // Moodle hack end. var a = this.__msh_prevOnSubmit; var ret = true; // call previous submit methods if they were there. if (typeof a != "undefined") { for (var i = a.length; --i >= 0;) { ret = a[i]() && ret; } } return ret; }; if (typeof f.onreset == "function") { var funcref = f.onreset; if (typeof f.__msh_prevOnReset == "undefined") { f.__msh_prevOnReset = []; } f.__msh_prevOnReset.push(funcref); } f.onreset = function() { editor.setHTML(editor._textArea.value); editor.updateToolbar(); var a = this.__msh_prevOnReset; // call previous reset methods if they were there. if (typeof a != "undefined") { for (var i = a.length; --i >= 0;) { a[i](); } } }; } // add a handler for the "back/forward" case -- on body.unload we save // the HTML content into the original textarea. try { window.onunload = function() { editor._textArea.value = editor.getHTML(); }; } catch(e) {}; // creates & appends the toolbar this._createToolbar(); // create the IFRAME var iframe = document.createElement("iframe"); iframe.src = "http://lms.chartercollege.edu/lib/editor/htmlarea/blank.html"; iframe.className = "iframe"; htmlarea.appendChild(iframe); var editor = this editor._iframe = iframe; var doc = editor._iframe.contentWindow.document; editor._doc = doc; // Generate iframe content var html = "" if (!editor.config.fullPage) { html = "<html>\n"; html += "<head>\n"; html += '<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n'; if (editor.config.baseURL) html += '<base href="' + editor.config.baseURL + '" />'; html += '<style type="text/css">\n' + editor.config.pageStyle + "td { border: 1px dotted gray; } body { direction: ltr; } </style>\n"; // RTL support: direction added for RTL support html += "</head>\n"; html += '<body>\n'; html += editor._textArea.value; html = html.replace(/<nolink>/gi, '<span class="nolink">'). replace(/<\/nolink>/gi, '</span>'); html += "</body>\n"; html += "</html>"; } else { html = editor._textArea.value; if (html.match(HTMLArea.RE_doctype)) { editor.setDoctype(RegExp.$1); html = html.replace(HTMLArea.RE_doctype, ""); } } // Write content to iframe doc.open(); doc.write(html); doc.close(); // The magic: onClick the designMode is set to 'on' // This one is for click on HTMLarea toolbar and else if(HTMLArea.is_gecko) { HTMLArea._addEvents( this._htmlArea, ["mousedown"], function(event) { if(editor.designModeIsOn != true) { editor.designModeIsOn = true; try { doc.designMode = "on"; } catch (e) { alert(e) }; } } ); // This one is for click in iframe HTMLArea._addEvents( editor._iframe.contentWindow, ["mousedown"], function(event) { if(editor.designModeIsOn != true) { editor.designModeIsOn = true; try { doc.designMode = "on"; } catch (e) { alert(e) }; } } ); } // creates & appends the status bar, if the case this._createStatusBar(); // remove the default border as it keeps us from computing correctly // the sizes. (somebody tell me why doesn't this work in IE) if (!HTMLArea.is_ie) { iframe.style.borderWidth = "1px"; } // size the IFRAME according to user's prefs or initial textarea var height = (this.config.height == "auto" ? (this._ta_size.h) : this.config.height); height = parseInt(height); var width = (this.config.width == "auto" ? (this._toolbar.offsetWidth) : this.config.width); width = (width == 0 ? 598 : width); //width = Math.max(parseInt(width), 598); width = String(width); if (width.match(/^\d+$/)) { // is this a pure int? if so, let it be in px, and remove 2px height -= 2; width -= 2; width=width+"px"; } iframe.style.width = width; if (this.config.sizeIncludesToolbar) { // substract toolbar height height -= this._toolbar.offsetHeight; height -= this._statusBar.offsetHeight; } if (height < 0) { height = 0; } iframe.style.height = height + "px"; // the editor including the toolbar now have the same size as the // original textarea.. which means that we need to reduce that a bit. textarea.style.width = iframe.style.width; textarea.style.height = iframe.style.height; if (HTMLArea.is_ie) { doc.body.contentEditable = true; } // intercept some events; for updating the toolbar & keyboard handlers HTMLArea._addEvents (doc, ["keydown", "keypress", "mousedown", "mouseup", "drag"], function (event) { return editor._editorEvent(HTMLArea.is_ie ? editor._iframe.contentWindow.event : event); }); // check if any plugins have registered refresh handlers for (var i in editor.plugins) { var plugin = editor.plugins[i].instance; if (typeof plugin.onGenerate == "function") { plugin.onGenerate(); } if (typeof plugin.onGenerateOnce == "function") { plugin.onGenerateOnce(); plugin.onGenerateOnce = null; } } // Moodle fix for bug Bug #2521 Too long statusbar line in IE // //setTimeout(function() { // editor.updateToolbar(); //}, 250); if (typeof editor.onGenerate == "function") { editor.onGenerate(); } }; // Switches editor mode; parameter can be "textmode" or "wysiwyg". If no // parameter was passed this function toggles between modes. HTMLArea.prototype.setMode = function(mode) { if (typeof mode == "undefined") { mode = ((this._editMode == "textmode") ? "wysiwyg" : "textmode"); } switch (mode) { case "textmode": this._textArea.value = this.getHTML(); this._iframe.style.display = "none"; this._textArea.style.display = "block"; if (this.config.statusBar) { while(this._statusBar.childNodes.length>0) { this._statusBar.removeChild(this._statusBar.childNodes[0]); } this._statusBar.appendChild(document.createTextNode(HTMLArea.I18N.msg["TEXT_MODE"])); } break; case "wysiwyg": if (HTMLArea.is_gecko) { // disable design mode before changing innerHTML try { this._doc.designMode = "off"; } catch(e) {}; } if (!this.config.fullPage) this._doc.body.innerHTML = this.getHTML(); else this.setFullHTML(this.getHTML()); this._iframe.style.display = "block"; this._textArea.style.display = "none"; if (HTMLArea.is_gecko) { // we need to refresh that info for Moz-1.3a try { this._doc.designMode = "on"; //this._doc.focus(); } catch(e) {}; } if (this.config.statusBar) { this._statusBar.innerHTML = ''; this._statusBar.appendChild(this._statusBarTree); } break; default: alert("Mode <" + mode + "> not defined!"); return false; } this._editMode = mode; this.focusEditor(); }; HTMLArea.prototype.setFullHTML = function(html) { var save_multiline = RegExp.multiline; RegExp.multiline = true; if (html.match(HTMLArea.RE_doctype)) { this.setDoctype(RegExp.$1); html = html.replace(HTMLArea.RE_doctype, ""); } RegExp.multiline = save_multiline; if (!HTMLArea.is_ie) { if (html.match(HTMLArea.RE_head)) this._doc.getElementsByTagName("head")[0].innerHTML = RegExp.$1; if (html.match(HTMLArea.RE_body)) this._doc.getElementsByTagName("body")[0].innerHTML = RegExp.$1; } else { var html_re = /<html>((.|\n)*?)<\/html>/i; html = html.replace(html_re, "$1"); this._doc.open(); this._doc.write(html); this._doc.close(); this._doc.body.contentEditable = true; return true; } }; // Category: PLUGINS HTMLArea.prototype.registerPlugin2 = function(plugin, args) { if (typeof plugin == "string") plugin = eval(plugin); var obj = new plugin(this, args); if (obj) { var clone = {}; var info = plugin._pluginInfo; for (var i in info) clone[i] = info[i]; clone.instance = obj; clone.args = args; this.plugins[plugin._pluginInfo.name] = clone; } else alert("Can't register plugin " + plugin.toString() + "."); }; // Create the specified plugin and register it with this HTMLArea HTMLArea.prototype.registerPlugin = function() { var plugin = arguments[0]; var args = []; for (var i = 1; i < arguments.length; ++i) args.push(arguments[i]); this.registerPlugin2(plugin, args); }; HTMLArea.loadPlugin = function(pluginName) { var dir = _editor_url + "plugins/" + pluginName; var plugin = pluginName.replace(/([a-z])([A-Z])([a-z])/g, function (str, l1, l2, l3) { return l1 + "-" + l2.toLowerCase() + l3; }).toLowerCase() + ".js"; var plugin_file = dir + "/" + plugin; var plugin_lang = dir + "/lang/" + HTMLArea.I18N.lang + ".js"; HTMLArea._scripts.push(plugin_file, plugin_lang); document.write("<script type='text/javascript' src='" + plugin_file + "'></script>"); document.write("<script type='text/javascript' src='" + plugin_lang + "'></script>"); }; HTMLArea.loadStyle = function(style, plugin) { var url = _editor_url || ''; if (typeof plugin != "undefined") { url += "plugins/" + plugin + "/"; } url += style; document.write("<style type='text/css'>@import url(" + url + ");</style>"); }; HTMLArea.loadStyle("htmlarea.css"); // Category: EDITOR UTILITIES // The following function is a slight variation of the word cleaner code posted // by Weeezl (user @ InteractiveTools forums). HTMLArea.prototype._wordClean = function() { this._unnestBlocks(); var D = this.getInnerHTML(); if (/[Mm]so/.test(D)) { // make one line D = D.replace(/\r\n/g, '\[br\]'). replace(/\n/g, ''). replace(/\r/g, ''). replace(/\ \;/g,' '); // keep tags, strip attributes D = D.replace(/ class=[^\s|>]*/gi,''). //replace(/<p [^>]*TEXT-ALIGN: justify[^>]*>/gi,'<p align="justify">'). replace(/ style=\"[^>]*\"/gi,''). replace(/ align=[^\s|>]*/gi,''); //clean up tags D = D.replace(/<b [^>]*>/gi,'<b>'). replace(/<i [^>]*>/gi,'<i>'). replace(/<li [^>]*>/gi,'<li>'). replace(/<ul [^>]*>/gi,'<ul>'); // replace outdated tags D = D.replace(/<b>/gi,'<strong>'). replace(/<\/b>/gi,'</strong>'); // mozilla doesn't like <em> tags D = D.replace(/<em>/gi,'<i>'). replace(/<\/em>/gi,'</i>'); // kill unwanted tags D = D.replace(/<\?xml:[^>]*>/g, ''). // Word xml replace(/<\/?st1:[^>]*>/g,''). // Word SmartTags replace(/<\/?[a-z]\:[^>]*>/g,''). // All other funny Word non-HTML stuff replace(/<\/?personname[^>]*>/gi,''). replace(/<\/?font[^>]*>/gi,''). // Disable if you want to keep font formatting replace(/<\/?span[^>]*>/gi,' '). replace(/<\/?div[^>]*>/gi,' '). replace(/<\/?pre[^>]*>/gi,' '). replace(/<(\/?)(h[1-6]+)[^>]*>/gi,'<$1$2>'); // Lorenzo Nicola's addition // to get rid off silly word generated tags. D = D.replace(/<!--\[[^\]]*\]-->/gi,' '); //remove empty tags //D = D.replace(/<strong><\/strong>/gi,''). //replace(/<i><\/i>/gi,''). //replace(/<P[^>]*><\/P>/gi,''); D = D.replace(/<h[1-6]+>\s?<\/h[1-6]+>/gi, ''); // Remove empty headings // nuke double tags oldlen = D.length + 1; while(oldlen > D.length) { oldlen = D.length; // join us now and free the tags, we'll be free hackers, we'll be free... ;-) D = D.replace(/<([a-z][a-z]*)> *<\/\1>/gi,' '). replace(/<([a-z][a-z]*)> *<([a-z][^>]*)> *<\/\1>/gi,'<$2>'); } D = D.replace(/<([a-z][a-z]*)><\1>/gi,'<$1>'). replace(/<\/([a-z][a-z]*)><\/\1>/gi,'<\/$1>'); // nuke double spaces D = D.replace(/ */gi,' '); // Split into lines and remove // empty lines and add carriage returns back var splitter = /\[br\]/g; var emptyLine = /^\s+\s+$/g; var strHTML = ''; var toLines = D.split(splitter); for (var i = 0; i < toLines.length; i++) { var line = toLines[i]; if (line.length < 1) { continue; } if (emptyLine.test(line)) { continue; } line = line.replace(/^\s+\s+$/g, ''); strHTML += line + '\n'; } D = strHTML; strHTML = ''; this.setHTML(D); this.updateToolbar(); } }; HTMLArea.prototype._unnestBlockWalk = function(node, unnestingParent) { if (HTMLArea.RE_blocktag.test(node.nodeName)) { if (unnestingParent) { if (node.nextSibling) { var splitNode = this._doc.createElement(unnestingParent.nodeName.toLowerCase()); while (node.nextSibling) { splitNode.appendChild(node.nextSibling); } unnestingParent.parentNode.insertBefore(splitNode, unnestingParent.nextSibling); } unnestingParent.parentNode.insertBefore(node, unnestingParent.nextSibling); return; } else if (node.firstChild) { this._unnestBlockWalk(node.firstChild, node); } } else { if (node.firstChild) { this._unnestBlockWalk(node.firstChild, null); } } if (node.nextSibling) { this._unnestBlockWalk(node.nextSibling, unnestingParent); } } HTMLArea.prototype._unnestBlocks = function() { this._unnestBlockWalk(this._doc.documentElement, null); } HTMLArea.prototype.forceRedraw = function() { this._doc.body.style.visibility = "hidden"; this._doc.body.style.visibility = "visible"; // this._doc.body.innerHTML = this.getInnerHTML(); }; // focuses the iframe window. returns a reference to the editor document. HTMLArea.prototype.focusEditor = function() { switch (this._editMode) { case "wysiwyg" : this._iframe.contentWindow.focus(); break; case "textmode": this._textArea.focus(); break; default : alert("ERROR: mode " + this._editMode + " is not defined"); } return this._doc; }; // takes a snapshot of the current text (for undo) HTMLArea.prototype._undoTakeSnapshot = function() { ++this._undoPos; if (this._undoPos >= this.config.undoSteps) { // remove the first element this._undoQueue.shift(); --this._undoPos; } // use the fasted method (getInnerHTML); var take = true; var txt = this.getInnerHTML(); if (this._undoPos > 0) take = (this._undoQueue[this._undoPos - 1] != txt); if (take) { this._undoQueue[this._undoPos] = txt; } else { this._undoPos--; } }; HTMLArea.prototype.undo = function() { if (this._undoPos > 0) { var txt = this._undoQueue[--this._undoPos]; if (txt) this.setHTML(txt); else ++this._undoPos; } }; HTMLArea.prototype.redo = function() { if (this._undoPos < this._undoQueue.length - 1) { var txt = this._undoQueue[++this._undoPos]; if (txt) this.setHTML(txt); else --this._undoPos; } }; // updates enabled/disable/active state of the toolbar elements HTMLArea.prototype.updateToolbar = function(noStatus) { var doc = this._doc; var text = (this._editMode == "textmode"); var ancestors = null; if (!text) { ancestors = this.getAllAncestors(); if (this.config.statusBar && !noStatus) { while(this._statusBarTree.childNodes.length>0) { this._statusBarTree.removeChild(this._statusBarTree.childNodes[0]); } this._statusBarTree.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": ")); for (var i = ancestors.length; --i >= 0;) { var el = ancestors[i]; if (!el) { // hell knows why we get here; this // could be a classic example of why // it's good to check for conditions // that are impossible to happen ;-) continue; } var a = document.createElement("a"); a.href = "#"; a.el = el; a.editor = this; a.onclick = function() { this.blur(); this.editor.selectNodeContents(this.el); this.editor.updateToolbar(true); return false; }; a.oncontextmenu = function() { // TODO: add context menu here this.blur(); var info = "Inline style:\n\n"; info += this.el.style.cssText.split(/;\s*/).join(";\n"); alert(info); return false; }; var txt = el.tagName.toLowerCase(); a.title = el.style.cssText; if (el.id) { txt += "#" + el.id; } if (el.className) { txt += "." + el.className; } a.appendChild(document.createTextNode(txt)); this._statusBarTree.appendChild(a); if (i != 0) { this._statusBarTree.appendChild(document.createTextNode(String.fromCharCode(0xbb))); } } } } for (var i in this._toolbarObjects) { var btn = this._toolbarObjects[i]; var cmd = i; var inContext = true; if (btn.context && !text) { inContext = false; var context = btn.context; var attrs = []; if (/(.*)\[(.*?)\]/.test(context)) { context = RegExp.$1; attrs = RegExp.$2.split(","); } context = context.toLowerCase(); var match = (context == "*"); for (var k in ancestors) { if (!ancestors[k]) { // the impossible really happens. continue; } if (match || (ancestors[k].tagName.toLowerCase() == context)) { inContext = true; for (var ka in attrs) { if (!eval("ancestors[k]." + attrs[ka])) { inContext = false; break; } } if (inContext) { break; } } } } btn.state("enabled", (!text || btn.text) && inContext); if (typeof cmd == "function") { continue; } // look-it-up in the custom dropdown boxes var dropdown = this.config.customSelects[cmd]; if ((!text || btn.text) && (typeof dropdown != "undefined")) { dropdown.refresh(this); continue; } switch (cmd) { case "fontname": case "fontsize": case "formatblock": if (!text) try { var value = ("" + doc.queryCommandValue(cmd)).toLowerCase(); if (!value) { // FIXME: what do we do here? break; } var options = this.config[cmd]; var k = 0; // btn.element.selectedIndex = 0; for (var j in options) { // FIXME: the following line is scary. if ((j.toLowerCase() == value) || (options[j].substr(0, value.length).toLowerCase() == value)) { btn.element.selectedIndex = k; break; } ++k; } } catch(e) {}; break; case "language": if (!text) try { var value; parentEl = this.getParentElement(); if (parentEl.getAttribute('lang')) { // A language was previously defined for the block. if (parentEl.getAttribute('class') == 'multilang') { value = parentEl.getAttribute('lang')+'_ML'; } else { value = parentEl.getAttribute('lang'); } } else { value = ''; } var options = this.config[cmd]; var k = 0; for (var j in options) { // FIXME: the following line is scary. if ((j.toLowerCase() == value) || (options[j].substr(0, value.length).toLowerCase() == value)) { btn.element.selectedIndex = k; break; } ++k; } } catch(e) {}; break; case "textindicator": if (!text) { try {with (btn.element.style) { backgroundColor = HTMLArea._makeColor( doc.queryCommandValue(HTMLArea.is_ie ? "backcolor" : "hilitecolor")); if (/transparent/i.test(backgroundColor)) { // Mozilla backgroundColor = HTMLArea._makeColor(doc.queryCommandValue("backcolor")); } color = HTMLArea._makeColor(doc.queryCommandValue("forecolor")); fontFamily = doc.queryCommandValue("fontname"); fontWeight = doc.queryCommandState("bold") ? "bold" : "normal"; fontStyle = doc.queryCommandState("italic") ? "italic" : "normal"; }} catch (e) { // alert(e + "\n\n" + cmd); } } break; case "htmlmode": btn.state("active", text); break; case "lefttoright": case "righttoleft": var el = this.getParentElement(); while (el && !HTMLArea.isBlockElement(el)) el = el.parentNode; if (el) btn.state("active", (el.style.direction == ((cmd == "righttoleft") ? "rtl" : "ltr"))); break; default: try { btn.state("active", (!text && doc.queryCommandState(cmd))); } catch (e) {} } } // take undo snapshots if (this._customUndo && !this._timerUndo) { this._undoTakeSnapshot(); var editor = this; this._timerUndo = setTimeout(function() { editor._timerUndo = null; }, this.config.undoTimeout); } // check if any plugins have registered refresh handlers for (var i in this.plugins) { var plugin = this.plugins[i].instance; if (typeof plugin.onUpdateToolbar == "function") plugin.onUpdateToolbar(); } }; /** Returns a node after which we can insert other nodes, in the current * selection. The selection is removed. It splits a text node, if needed. */ HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) { if (!HTMLArea.is_ie) { var sel = this._getSelection(); var range = this._createRange(sel); // remove the current selection sel.removeAllRanges(); range.deleteContents(); var node = range.startContainer; var pos = range.startOffset; switch (node.nodeType) { case 3: // Node.TEXT_NODE // we have to split it at the caret position. if (toBeInserted.nodeType == 3) { // do optimized insertion node.insertData(pos, toBeInserted.data); range = this._createRange(); range.setEnd(node, pos + toBeInserted.length); range.setStart(node, pos + toBeInserted.length); sel.addRange(range); } else { node = node.splitText(pos); var selnode = toBeInserted; if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { selnode = selnode.firstChild; } node.parentNode.insertBefore(toBeInserted, node); this.selectNodeContents(selnode); this.updateToolbar(); } break; case 1: // Node.ELEMENT_NODE var selnode = toBeInserted; if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { selnode = selnode.firstChild; } node.insertBefore(toBeInserted, node.childNodes[pos]); this.selectNodeContents(selnode); this.updateToolbar(); break; } } else { return null; // this function not yet used for IE <FIXME> } }; // Returns the deepest node that contains both endpoints of the selection. HTMLArea.prototype.getParentElement = function() { var sel = this._getSelection(); var range = this._createRange(sel); if (HTMLArea.is_ie) { switch (sel.type) { case "Text": case "None": return range.parentElement(); case "Control": return range.item(0); default: return this._doc.body; } } else try { var p = range.commonAncestorContainer; if (!range.collapsed && range.startContainer == range.endContainer && range.startOffset - range.endOffset <= 1 && range.startContainer.hasChildNodes()) p = range.startContainer.childNodes[range.startOffset]; /* alert(range.startContainer + ":" + range.startOffset + "\n" + range.endContainer + ":" + range.endOffset); */ while (p.nodeType == 3) { p = p.parentNode; } return p; } catch (e) { return null; } }; // Returns an array with all the ancestor nodes of the selection. HTMLArea.prototype.getAllAncestors = function() { var p = this.getParentElement(); var a = []; while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) { a.push(p); p = p.parentNode; } a.push(this._doc.body); return a; }; // Selects the contents inside the given node HTMLArea.prototype.selectNodeContents = function(node, pos) { this.focusEditor(); this.forceRedraw(); var range; var collapsed = (typeof pos != "undefined"); if (HTMLArea.is_ie) { range = this._doc.body.createTextRange(); range.moveToElementText(node); (collapsed) && range.collapse(pos); range.select(); } else { var sel = this._getSelection(); range = this._doc.createRange(); range.selectNodeContents(node); (collapsed) && range.collapse(pos); sel.removeAllRanges(); sel.addRange(range); } }; // Call this function to insert HTML code at the current position. It deletes // the selection, if any. HTMLArea.prototype.insertHTML = function(html) { var sel = this._getSelection(); var range = this._createRange(sel); if (HTMLArea.is_ie) { range.pasteHTML(html); } else { // construct a new document fragment with the given HTML var fragment = this._doc.createDocumentFragment(); var div = this._doc.createElement("div"); div.innerHTML = html; while (div.firstChild) { // the following call also removes the node from div fragment.appendChild(div.firstChild); } // this also removes the selection var node = this.insertNodeAtSelection(fragment); } }; // Call this function to surround the existing HTML code in the selection with // your tags. FIXME: buggy! This function will be deprecated "soon". HTMLArea.prototype.surroundHTML = function(startTag, endTag) { var html = this.getSelectedHTML(); // the following also deletes the selection this.insertHTML(startTag + html + endTag); }; /// Retrieve the selected block HTMLArea.prototype.getSelectedHTML = function() { var sel = this._getSelection(); var range = this._createRange(sel); var existing = null; if (HTMLArea.is_ie) { existing = range.htmlText; } else { existing = HTMLArea.getHTML(range.cloneContents(), false, this); } return existing; }; /// Return true if we have some selection HTMLArea.prototype.hasSelectedText = function() { // FIXME: come _on_ mishoo, you can do better than this ;-) return this.getSelectedHTML() != ''; }; HTMLArea.prototype._createLink = function(link) { var editor = this; var allinks = editor._doc.getElementsByTagName('A'); var anchors = new Array(); for(var i = 0; i < allinks.length; i++) { var attrname = allinks[i].getAttribute('name'); if((HTMLArea.is_ie ? attrname.length > 0 : attrname != null)) { anchors[i] = allinks[i].getAttribute('name'); } } var outparam = null; if (typeof link == "undefined") { link = this.getParentElement(); if (link && !/^a$/i.test(link.tagName)) { if(link.tagName.toLowerCase() != 'img') { link = null; var sel = this._getSelection(); var rng = this._createRange(sel); var len = HTMLArea.is_ie ? rng.text.toString().length : sel.toString().length; if(len < 1) { alert("You must select text first!"); return false; } } link = null; } } if (link) { outparam = { f_href : HTMLArea.is_ie ? editor.stripBaseURL(link.href) : link.getAttribute("href"), f_title : link.title, f_target : link.target, f_anchors: anchors }; } else { outparam = { f_anchors:anchors }; } this._popupDialog("link_std.php?id=1", function(param) { if (!param) { return false; } var a = link; if (!a) { // Create a temporary unique link, insert it then find it and set the correct parameters var tmpLink = 'http://www.moodle.org/'+Math.random(); var elm = editor._doc.execCommand("createlink",false,tmpLink); var links=editor._doc.getElementsByTagName("a"); for(var i=0;i<links.length;i++){ var link=links[i]; if(link.href==tmpLink) { link.href=param.f_href.trim(); if(param.f_target){ link.target=param.f_target.trim(); } if(param.f_title){ link.title=param.f_title.trim(); } break; } } } else { var href = param.f_href.trim(); editor.selectNodeContents(a); if (href == "") { editor._doc.execCommand("unlink", false, null); editor.updateToolbar(); return false; } else { a.href = href; } } if (!(a && /^a$/i.test(a.tagName))) { return false; } a.target = param.f_target.trim(); a.title = param.f_title.trim(); editor.selectNodeContents(a); editor.updateToolbar(); }, outparam); }; // Called when the user clicks on "InsertImage" button. If an image is already // there, it will just modify it's properties. HTMLArea.prototype._insertImage = function(image) { // Make sure that editor has focus this.focusEditor(); var editor = this; // for nested functions var outparam = null; if (typeof image == "undefined") { image = this.getParentElement(); if (image && !/^img$/i.test(image.tagName)) image = null; } if (image) outparam = { f_url : HTMLArea.is_ie ? editor.stripBaseURL(image.src) : image.getAttribute("src"), f_alt : image.alt, f_border : image.border, f_align : image.align, f_vert : image.vspace, f_horiz : image.hspace, f_width : image.width, f_height : image.height }; this._popupDialog("insert_image_std.php?id=1", function(param) { if (!param) { // user must have pressed Cancel return false; } var img = image; if (!img) { var sel = editor._getSelection(); var range = editor._createRange(sel); if (HTMLArea.is_ie) { editor._doc.execCommand("insertimage", false, param.f_url); } if (HTMLArea.is_ie) { img = range.parentElement(); // wonder if this works... if (img.tagName.toLowerCase() != "img") { img = img.previousSibling; } } else { // MOODLE HACK: startContainer.perviousSibling // Doesn't work so we'll use createElement and // insertNodeAtSelection //img = range.startContainer.previousSibling; var img = editor._doc.createElement("img"); img.setAttribute("src",""+ param.f_url +""); img.setAttribute("alt",""+ param.f_alt +""); editor.insertNodeAtSelection(img); } } else { img.src = param.f_url; } for (field in param) { var value = param[field]; switch (field) { case "f_alt" : img.alt = value; img.title = value; break; case "f_border" : img.border = parseInt(value || "0"); break; case "f_align" : img.align = value; break; case "f_vert" : img.vspace = parseInt(value || "0"); break; case "f_horiz" : img.hspace = parseInt(value || "0"); break; case "f_width" : if(value != 0) { img.width = parseInt(value); } else { break; } break; case "f_height" : if(value != 0) { img.height = parseInt(value); } else { break; } break; } } }, outparam); }; // Called when the user clicks the Insert Table button HTMLArea.prototype._insertTable = function() { var sel = this._getSelection(); var range = this._createRange(sel); var editor = this; // for nested functions this._popupDialog("insert_table.php?id=1", function(param) { if (!param) { // user must have pressed Cancel return false; } var doc = editor._doc; // create the table element var table = doc.createElement("table"); // assign the given arguments for (var field in param) { var value = param[field]; if (!value) { continue; } switch (field) { case "f_width" : table.width = value + param["f_unit"]; break; case "f_align" : table.align = value; break; case "f_border" : table.border = parseInt(value); break; case "f_spacing" : table.cellspacing = parseInt(value); break; case "f_padding" : table.cellpadding = parseInt(value); break; } } var tbody = doc.createElement("tbody"); table.appendChild(tbody); for (var i = 0; i < param["f_rows"]; ++i) { var tr = doc.createElement("tr"); tbody.appendChild(tr); for (var j = 0; j < param["f_cols"]; ++j) { var td = doc.createElement("td"); /// Moodle hack if(param["f_unit"] == "px") { tdwidth = Math.round(table.width / param["f_cols"]); } else { tdwidth = Math.round(100 / param["f_cols"]); } td.setAttribute("width",tdwidth + param["f_unit"]); td.setAttribute("valign","top"); /// Moodle hack -ends tr.appendChild(td); // Mozilla likes to see something inside the cell. (HTMLArea.is_gecko) && td.appendChild(doc.createElement("br")); } } if (HTMLArea.is_ie) { range.pasteHTML(table.outerHTML); } else { // insert the table editor.insertNodeAtSelection(table); } return true; }, null); }; /// Moodle hack - insertSmile HTMLArea.prototype._insertSmile = function() { // Make sure that editor has focus this.focusEditor(); var sel = this._getSelection(); var range = this._createRange(sel); var editor = this; // for nested functions this._popupDialog("dlg_ins_smile.php?id=1", function(imgString) { if(!imgString) { return false; } if (HTMLArea.is_ie) { range.pasteHTML(imgString); } else { editor.insertHTML(imgString); } return true; }, null); }; HTMLArea.prototype._insertChar = function() { var sel = this._getSelection(); var range = this._createRange(sel); var editor = this; // for nested functions this._popupDialog("dlg_ins_char.php?id=1", function(sChar) { if(!sChar) { return false; } if (HTMLArea.is_ie) { range.pasteHTML(sChar); } else { // insert the table editor.insertHTML(sChar); } return true; }, null); }; HTMLArea.prototype._removelink = function() { var editor = this; link = this.getParentElement(); editor.selectNodeContents(link); this._doc.execCommand("unlink", false, null); this.focusEditor(); }; HTMLArea.prototype._createanchor = function () { var editor = this; var sel = this._getSelection(); var rng = this._createRange(sel); var len = HTMLArea.is_ie ? rng.text.toString().length : sel.toString().length; if(len < 1) { alert("You must select text first!"); return false; } this._popupDialog("createanchor.php?id=1", function(objAn) { if(!objAn) { return false; } var str = '<a name="'+ objAn.anchor+'">'; str += HTMLArea.is_ie ? rng.text : sel ; str += '</a>'; editor.insertHTML(str); },null); }; HTMLArea.prototype._nolinktag = function () { var editor = this; var sel = this._getSelection(); var rng = this._createRange(sel); var len = HTMLArea.is_ie ? rng.text.toString().length : sel.toString().length; if (len < 1) { alert("You must select text first!"); return false; } var str = '<span class="nolink">'; str += HTMLArea.is_ie ? rng.text : sel; str += '</span>'; editor.insertHTML(str); this.focusEditor(); }; HTMLArea.prototype._searchReplace = function() { var editor = this; var selectedtxt = ""; var strReplaced = 'items replaced!'; var strNotfound = 'Search string Not Found!'; var ile; //in source mode mozilla show errors, try diffrent method if (editor._editMode == "wysiwyg") { selectedtxt = editor.getSelectedHTML(); } else { if (HTMLArea.is_ie) { selectedtxt = document.selection.createRange().text; } else { selectedtxt = getMozSelection(editor._textArea); } } outparam = { f_search : selectedtxt }; //Call Search And Replace popup window editor._popupDialog( "searchandreplace.php?id=1", function( entity ) { if ( !entity ) { //user must have pressed Cancel return false; } var text = editor.getHTML(); var search = entity[0]; var replace = entity[1]; var delim = entity[2]; var regularx = entity[3]; var closesar = entity[4]; ile = 0; if (search.length < 1) { alert ("Enter a search word! \n search for: " + entity[0]); } else { if (regularx) { var regX = new RegExp (search, delim) ; var text = text.replace ( regX, function (str, n) { // Increment our counter variable. ile++ ; //return replace ; return str.replace( regX, replace) ; } ) } else { while (text.indexOf(search)>-1) { pos = text.indexOf(search); text = "" + (text.substring(0, pos) + replace + text.substring((pos + search.length), text.length)); ile++; } } editor.setHTML(text); editor.forceRedraw(); if (ile > 0) { alert(ile + ' ' + strReplaced); } else { alert (strNotfound + "\n"); } } }, outparam); function getMozSelection(txtarea) { var selLength = txtarea.textLength; var selStart = txtarea.selectionStart; var selEnd = txtarea.selectionEnd; if (selEnd==1 || selEnd==2) selEnd=selLength; return (txtarea.value).substring(selStart, selEnd); } }; /// Moodle hack's ends // // Category: EVENT HANDLERS // el is reference to the SELECT object // txt is the name of the select field, as in config.toolbar HTMLArea.prototype._comboSelected = function(el, txt) { this.focusEditor(); var value = el.options[el.selectedIndex].value; switch (txt) { case "fontname": case "fontsize": this.execCommand(txt, false, value); break; case "language": this.setLang(value); break; case "formatblock": (HTMLArea.is_ie) && (value = "<" + value + ">"); this.execCommand(txt, false, value); break; default: // try to look it up in the registered dropdowns var dropdown = this.config.customSelects[txt]; if (typeof dropdown != "undefined") { dropdown.action(this); } else { alert("FIXME: combo box " + txt + " not implemented"); } } }; /** * Used to set the language for the selected content. * We use the <span lang="en" class="multilang">content</span> format for * content that should be marked for multilang filter use, and * <span lang="en">content</span> for normal content for which we want to * set the language (for screen reader usage, for example). */ HTMLArea.prototype.setLang = function(lang) { if (lang == 'multi') { // This is just the separator in the dropdown. Does nothing. return; } var editor = this; var selectedHTML = editor.getSelectedHTML(); var multiLang = false; var re = new RegExp('_ML', 'g'); if (lang.match(re)) { multiLang = true; lang = lang.replace(re, ''); } // Remove all lang attributes from span tags in selected html. selectedHTML = selectedHTML.replace(/(<span[^>]*)lang="[^"]*"([^>]*>)/, "$1$2"); selectedHTML = selectedHTML.replace(/(<span[^>]*)class="multilang"([^>]*>)/, "$1$2"); // If a span tag is now empty, delete it. selectedHTML = selectedHTML.replace(/<span\s*>(.*?)<\/span>/, "$1"); var parentEl = this.getParentElement(); var insertNewSpan = false; if (parentEl.nodeName == 'SPAN' && parentEl.getAttribute('lang')) { // A language was previously defined for the current block. // Check whether the selected text makes up the whole of the block // contents. var re = new RegExp(parentEl.innerHTML); if (selectedHTML.match(re)) { // The selected text makes up the whole of the span block. if (lang != '') { parentEl.setAttribute('lang', lang); if (multiLang) { parentEl.setAttribute('class', 'multilang'); } } else { parentEl.removeAttribute('lang'); var classAttr = parentEl.getAttribute('class'); if (classAttr) { classAttr = classAttr.replace(/multilang/, '').trim(); } if (classAttr == '') { parentEl.removeAttribute('class'); } if (parentEl.attributes.length == 0) { // The span is no longer needed. for (i=0; i<parentEl.childNodes.length; i++) { parentEl.parentNode.insertBefore(parentEl.childNodes[i], parentEl); } parentEl.parentNode.removeChild(parentEl); } } } else { insertNewSpan = true; } } else { insertNewSpan = true; } if (insertNewSpan && lang != '') { var str = '<span lang="'+lang.trim()+'"'; str += ' class="multilang"'; str += '>'; str += selectedHTML; str += '</span>'; editor.insertHTML(str); } } // the execCommand function (intercepts some commands and replaces them with // our own implementation) HTMLArea.prototype.execCommand = function(cmdID, UI, param) { var editor = this; // for nested functions this.focusEditor(); cmdID = cmdID.toLowerCase(); switch (cmdID) { case "htmlmode" : this.setMode(); break; case "hilitecolor": (HTMLArea.is_ie) && (cmdID = "backcolor"); case "forecolor": this._popupDialog("select_color.php?id=1", function(color) { if (color) { // selection not canceled editor._doc.execCommand(cmdID, false, "#" + color); } }, HTMLArea._colorToRgb(this._doc.queryCommandValue(cmdID))); break; case "createanchor": this._createanchor(); break; case "createlink": this._createLink(); break; case "unlink": this._removelink(); break; case "nolink": this._nolinktag(); break; case "popupeditor": // this object will be passed to the newly opened window HTMLArea._object = this; if (HTMLArea.is_ie) { { window.open(this.popupURL("fullscreen.php?id=1"), "ha_fullscreen", "toolbar=no,location=no,directories=no,status=no,menubar=no," + "scrollbars=no,resizable=yes,width=800,height=600"); } } else { window.open(this.popupURL("fullscreen.php?id=1"), "ha_fullscreen", "toolbar=no,menubar=no,personalbar=no,width=800,height=600," + "scrollbars=no,resizable=yes"); } break; case "undo": case "redo": if (this._customUndo) this[cmdID](); else this._doc.execCommand(cmdID, UI, param); break; case "inserttable": this._insertTable(); break; case "insertimage": this._insertImage(); break; case "insertsmile": this._insertSmile(); break; case "insertchar": this._insertChar(); break; case "searchandreplace": this._searchReplace(); break; case "about" : this._popupDialog("about.html", null, this); break; case "showhelp" : window.open(_editor_url + "reference.html", "ha_help"); break; case "killword": this._wordClean(); break; case "cut": case "copy": case "paste": try { // Paste first then clean this._doc.execCommand(cmdID, UI, param); if (this.config.killWordOnPaste) { this._wordClean(); } } catch (e) { if (HTMLArea.is_gecko) { if (confirm("Unfortunately, you cannot currently use normal keyboard shortcuts (or even the Paste button) for pasting text into this online editor. This is because of a security feature that is built into some versions of Mozilla and Firefox browsers.\\n\\nThere are three known workarounds you can try: \\n (1) Instead of CTRL-v, use SHIFT-Insert \\n (2) Use the Edit->Paste menu in your browser \\n (3) Change the preferences in your browser by editing the user.js file. \\n\\nClick the OK button below for more help, or Cancel to return to the editor")) window.open("http://moodle.org/mozillahelp"); } } break; case "lefttoright": case "righttoleft": var dir = (cmdID == "righttoleft") ? "rtl" : "ltr"; var el = this.getParentElement(); while (el && !HTMLArea.isBlockElement(el)) el = el.parentNode; if (el) { if (el.style.direction == dir) el.style.direction = ""; else el.style.direction = dir; } break; default: this._doc.execCommand(cmdID, UI, param); } this.updateToolbar(); return false; }; /** * A generic event handler for things that happen in the IFRAME's document. * This function also handles key bindings. */ HTMLArea.prototype._editorEvent = function(ev) { var editor = this; var keyEvent = (HTMLArea.is_ie && ev.type == "keydown") || (ev.type == "keypress"); if (keyEvent) { for (var i in editor.plugins) { var plugin = editor.plugins[i].instance; if (typeof plugin.onKeyPress == "function") plugin.onKeyPress(ev); } var sel = null; var range = null; var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase(); var cmd = null; var value = null; if (ev.ctrlKey && !ev.altKey) { /** * Ctrl modifier only. * We use these for shortcuts that change existing content, * e.g. make text bold. */ switch (key) { case 'a': // Select all. if (!HTMLArea.is_ie) { // KEY select all sel = this._getSelection(); sel.removeAllRanges(); range = this._createRange(); range.selectNodeContents(this._doc.body); sel.addRange(range); HTMLArea._stopEvent(ev); } break; // For the dropdowns, we assign focus to them so that they are // keyboard accessible. case 'o': editor.dropdowns['fontname'].focus(); break; case 'p': editor.dropdowns['fontsize'].focus(); break; case 'h': editor.dropdowns['formatblock'].focus(); break; case '=': editor.dropdowns['language'].focus(); break; case 'b': cmd = "bold"; break; case 'i': cmd = "italic"; break; case 'u': cmd = "underline"; break; case 's': cmd = "strikethrough"; break; case ',': cmd = "subscript"; break; case '.': cmd = "superscript"; break; case 'v': if (! HTMLArea.is_gecko ) { cmd = "paste"; } break; case '0': cmd = "killword"; break; case 'z': cmd = "undo"; break; case 'y': cmd = "redo"; break; case 'l': cmd = "justifyleft"; break; case 'e': cmd = "justifycenter"; break; case 'r': cmd = "justifyright"; break; case 'j': cmd = "justifyfull"; break; case '/': cmd = "lefttoright"; break; case '|': cmd = "righttoleft"; break; case ';': cmd = "outdent"; break; case "'": cmd = "indent"; break; case 'g': cmd = "forecolor"; break; case 'k': cmd = "hilitecolor"; break; case 'f': cmd = "searchandreplace"; break; case '`': cmd = "htmlmode"; break; // FIXME: can't toggle from source code to wysiwyg case 'm': // Toggle fullscreen on or off. if (this.config.btnList['popupeditor'][0] == 'Enlarge Editor') { cmd = 'popupeditor'; } else { window.close(); } break; // Headings. case '1': case '2': case '3': case '4': case '5': case '6': cmd = "formatblock"; value = "h" + key; if (HTMLArea.is_ie) { value = "<" + value + ">"; } break; } // End switch (key) } else if (ev.ctrlKey && ev.altKey) { /** * Ctrl + Alt modifiers. * We use these for shortcuts that insert stuff, e.g. images. */ switch (key) { case 'o': cmd = "insertorderedlist"; break; case 'u': cmd = "insertunorderedlist"; break; case 'r': cmd = "inserthorizontalrule"; break; case 'a': cmd = "createanchor"; break; case 'l': cmd = "createlink"; break; case 'd': cmd = "unlink"; break; case 'n': cmd = "nolink"; break; case 'i': cmd = 'insertimage'; break; case 't': cmd = 'inserttable'; break; case 's': cmd = 'insertsmile'; break; case 'c': cmd = 'insertchar'; break; } } if (cmd) { // execute simple command this.execCommand(cmd, false, value); HTMLArea._stopEvent(ev); } } // End if (keyEvent) /* else if (keyEvent) { // other keys here switch (ev.keyCode) { case 13: // KEY enter // if (HTMLArea.is_ie) { this.insertHTML("<br />"); HTMLArea._stopEvent(ev); // } break; } } */ // Update the toolbar state after some time. if (editor._timerToolbar) { clearTimeout(editor._timerToolbar); } editor._timerToolbar = setTimeout(function() { editor.updateToolbar(); editor._timerToolbar = null; }, 50); }; // retrieve the HTML HTMLArea.prototype.getHTML = function() { switch (this._editMode) { case "wysiwyg" : if (!this.config.fullPage) { return HTMLArea.getHTML(this._doc.body, false, this); } else return this.doctype + "\n" + HTMLArea.getHTML(this._doc.documentElement, true, this); case "textmode" : return this._textArea.value; default : alert("Mode <" + mode + "> not defined!"); } return false; }; // retrieve the HTML (fastest version, but uses innerHTML) HTMLArea.prototype.getInnerHTML = function() { switch (this._editMode) { case "wysiwyg" : if (!this.config.fullPage) return this._doc.body.innerHTML; else return this.doctype + "\n" + this._doc.documentElement.innerHTML; case "textmode" : return this._textArea.value; default : alert("Mode <" + mode + "> not defined!"); } return false; }; // completely change the HTML inside HTMLArea.prototype.setHTML = function(html) { switch (this._editMode) { case "wysiwyg" : if (!this.config.fullPage) this._doc.body.innerHTML = html; else // this._doc.documentElement.innerHTML = html; this._doc.body.innerHTML = html; break; case "textmode" : this._textArea.value = html; break; default : alert("Mode <" + mode + "> not defined!"); } return false; }; // sets the given doctype (useful when config.fullPage is true) HTMLArea.prototype.setDoctype = function(doctype) { this.doctype = doctype; }; /*************************************************** * Category: UTILITY FUNCTIONS ***************************************************/ // browser identification HTMLArea.agt = navigator.userAgent.toLowerCase(); HTMLArea.is_ie = ((HTMLArea.agt.indexOf("msie") != -1) && (HTMLArea.agt.indexOf("opera") == -1)); HTMLArea.is_opera = (HTMLArea.agt.indexOf("opera") != -1); HTMLArea.is_mac = (HTMLArea.agt.indexOf("mac") != -1); HTMLArea.is_mac_ie = (HTMLArea.is_ie && HTMLArea.is_mac); HTMLArea.is_win_ie = (HTMLArea.is_ie && !HTMLArea.is_mac); HTMLArea.is_gecko = (navigator.product == "Gecko"); HTMLArea.is_safari = (HTMLArea.agt.indexOf("safari") != -1); // variable used to pass the object to the popup editor window. HTMLArea._object = null; // function that returns a clone of the given object HTMLArea.cloneObject = function(obj) { var newObj = new Object; // check for array objects if (obj.constructor.toString().indexOf("function Array(") >= 0) { newObj = obj.constructor(); } // check for function objects (as usual, IE is phucked up) if (obj.constructor.toString().indexOf("function Function(") >= 0) { newObj = obj; // just copy reference to it } else for (var n in obj) { var node = obj[n]; if (typeof node == 'object') { newObj[n] = HTMLArea.cloneObject(node); } else { newObj[n] = node; } } return newObj; }; // FIXME!!! this should return false for IE < 5.5 HTMLArea.checkSupportedBrowser = function() { if (HTMLArea.is_gecko) { if (navigator.productSub < 20021201) { alert("You need at least Mozilla-1.3 Alpha.\n" + "Sorry, your Gecko is not supported."); return false; } if (navigator.productSub < 20030210) { alert("Mozilla < 1.3 Beta is not supported!\n" + "I'll try, though, but it might not work."); } } if(HTMLArea.is_safari) { return false; } return HTMLArea.is_gecko || HTMLArea.is_ie; }; // selection & ranges // returns the current selection object HTMLArea.prototype._getSelection = function() { if (HTMLArea.is_ie) { return this._doc.selection; } else { return this._iframe.contentWindow.getSelection(); } }; // returns a range for the current selection HTMLArea.prototype._createRange = function(sel) { if (HTMLArea.is_ie) { return sel.createRange(); } else { // Commented out because we need the dropdowns to be able to keep // focus for keyboard accessibility. Comment by Vy-Shane Sin Fat. //this.focusEditor(); if (typeof sel != "undefined") { try { return sel.getRangeAt(0); } catch(e) { return this._doc.createRange(); } } else { return this._doc.createRange(); } } }; // event handling HTMLArea._addEvent = function(el, evname, func) { if (HTMLArea.is_ie) { el.attachEvent("on" + evname, func); } else { el.addEventListener(evname, func, true); } }; HTMLArea._addEvents = function(el, evs, func) { for (var i in evs) { HTMLArea._addEvent(el, evs[i], func); } }; HTMLArea._removeEvent = function(el, evname, func) { if (HTMLArea.is_ie) { el.detachEvent("on" + evname, func); } else { el.removeEventListener(evname, func, true); } }; HTMLArea._removeEvents = function(el, evs, func) { for (var i in evs) { HTMLArea._removeEvent(el, evs[i], func); } }; HTMLArea._stopEvent = function(ev) { if (HTMLArea.is_ie) { ev.cancelBubble = true; ev.returnValue = false; } else { ev.preventDefault(); ev.stopPropagation(); } }; HTMLArea._removeClass = function(el, className) { if (!(el && el.className)) { return; } var cls = el.className.split(" "); var ar = new Array(); for (var i = cls.length; i > 0;) { if (cls[--i] != className) { ar[ar.length] = cls[i]; } } el.className = ar.join(" "); }; HTMLArea._addClass = function(el, className) { // remove the class first, if already there HTMLArea._removeClass(el, className); el.className += " " + className; }; HTMLArea._hasClass = function(el, className) { if (!(el && el.className)) { return false; } var cls = el.className.split(" "); for (var i = cls.length; i > 0;) { if (cls[--i] == className) { return true; } } return false; }; HTMLArea.isBlockElement = function(el) { var blockTags = " body form textarea fieldset ul ol dl li div " + "p h1 h2 h3 h4 h5 h6 quote pre table thead " + "tbody tfoot tr td iframe address "; try { return (blockTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1); } catch (e) {} }; HTMLArea.needsClosingTag = function(el) { var closingTags = " head script style div span tr td tbody table em strong font a title iframe object applet "; return (closingTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1); }; // performs HTML encoding of some given string HTMLArea.htmlEncode = function(str) { // we don't need regexp for that, but.. so be it for now. str = str.replace(/&/ig, "&"); str = str.replace(/</ig, "<"); str = str.replace(/>/ig, ">"); str = str.replace(/\x22/ig, """); // \x22 means '"' -- we use hex reprezentation so that we don't disturb // JS compressors (well, at least mine fails.. ;) return str; }; HTMLArea.isStandardTag = function (el) { return HTMLArea.RE_msietag.test(el.tagName); }; HTMLArea.isSingleTag = function (el) { var re = /^(br|hr|img|input|link|meta|param|embed|area)$/i; return re.test(el.tagName.toLowerCase()); }; // Retrieves the HTML code from the given node. This is a replacement for // getting innerHTML, using standard DOM calls. HTMLArea.getHTML = function(root, outputRoot, editor) { var html = ""; switch (root.nodeType) { case 1: // Node.ELEMENT_NODE case 11: // Node.DOCUMENT_FRAGMENT_NODE var closed; var i; var root_tag = (root.nodeType == 1) ? root.tagName.toLowerCase() : ''; if (HTMLArea.RE_junktag.test(root_tag)) { return ''; } if (HTMLArea.is_ie && root_tag == "head") { if (outputRoot) html += "<head>"; // lowercasize var save_multiline = RegExp.multiline; RegExp.multiline = true; var txt = root.innerHTML.replace(HTMLArea.RE_tagName, function(str, p1, p2) { return p1 + p2.toLowerCase(); }); RegExp.multiline = save_multiline; html += txt; if (outputRoot) html += "</head>"; break; } else if (outputRoot) { closed = (!(root.hasChildNodes() || !HTMLArea.isSingleTag(root))); html = "<" + root.tagName.toLowerCase(); var attrs = root.attributes; for (i = 0; i < attrs.length; ++i) { var a = attrs.item(i); if (!a.specified) { continue; } var name = a.nodeName.toLowerCase(); if (/_moz|contenteditable|_msh/.test(name)) { // avoid certain attributes continue; } var value; if (name != "style") { // // Using Gecko the values of href and src are converted to absolute links // unless we get them using nodeValue() if (typeof root[a.nodeName] != "undefined" && name != "href" && name != "src") { value = root[a.nodeName]; } else { // This seems to be working, but if it does cause // problems later on return the old value... if (name.toLowerCase() == "href" && name.toLowerCase() == "src") { value = root[a.nodeName]; } else { value = a.nodeValue; } if (HTMLArea.is_ie && (name == "href" || name == "src")) { value = editor.stripBaseURL(value); } } } else { // IE fails to put style in attributes list // FIXME: cssText reported by IE is UPPERCASE value = root.style.cssText.toLowerCase(); } if (/(_moz|^$)/.test(value)) { // Mozilla reports some special tags // here; we don't need them. continue; } html += " " + name + '="' + value + '"'; } html += closed ? " />" : ">"; } for (i = root.firstChild; i; i = i.nextSibling) { html += HTMLArea.getHTML(i, true, editor); } if (outputRoot && !closed) { if ( HTMLArea.is_ie && !HTMLArea.isStandardTag(root) ) { html += ''; } else { html += "</" + root.tagName.toLowerCase() + ">"; } } break; case 3: // Node.TEXT_NODE // If a text node is alone in an element and all spaces, replace it with an non breaking one // This partially undoes the damage done by moz, which translates ' 's into spaces in the data element if ( !root.previousSibling && !root.nextSibling && root.data.match(/^\s*$/i) && root.data.length > 1 ) html = ' '; else html = HTMLArea.htmlEncode(root.data); break; case 8: // Node.COMMENT_NODE html = "<!--" + root.data + "-->"; break; // skip comments, for now. } return HTMLArea.indent(html); }; HTMLArea.prototype.stripBaseURL = function(string) { var baseurl = this.config.baseURL; // IE adds the path to an anchor, converting #anchor // to path/#anchor which of course needs to be fixed var index = string.indexOf("/#")+1; if ((index > 0) && (string.indexOf(baseurl) > -1)) { return string.substr(index); } return string; // Moodle doesn't use the code below because // Moodle likes to keep absolute links // strip to last directory in case baseurl points to a file baseurl = baseurl.replace(/[^\/]+$/, ''); var basere = new RegExp(baseurl); string = string.replace(basere, ""); // strip host-part of URL which is added by MSIE to links relative to server root baseurl = baseurl.replace(/^(https?:\/\/[^\/]+)(.*)$/, '$1'); basere = new RegExp(baseurl); return string.replace(basere, ""); }; String.prototype.trim = function() { a = this.replace(/^\s+/, ''); return a.replace(/\s+$/, ''); }; // creates a rgb-style color from a number HTMLArea._makeColor = function(v) { if (typeof v != "number") { // already in rgb (hopefully); IE doesn't get here. return v; } // IE sends number; convert to rgb. var r = v & 0xFF; var g = (v >> 8) & 0xFF; var b = (v >> 16) & 0xFF; return "rgb(" + r + "," + g + "," + b + ")"; }; // returns hexadecimal color representation from a number or a rgb-style color. HTMLArea._colorToRgb = function(v) { if (!v) return ''; // returns the hex representation of one byte (2 digits) function hex(d) { return (d < 16) ? ("0" + d.toString(16)) : d.toString(16); }; if (typeof v == "number") { // we're talking to IE here var r = v & 0xFF; var g = (v >> 8) & 0xFF; var b = (v >> 16) & 0xFF; return "#" + hex(r) + hex(g) + hex(b); } if (v.substr(0, 3) == "rgb") { // in rgb(...) form -- Mozilla var re = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/; if (v.match(re)) { var r = parseInt(RegExp.$1); var g = parseInt(RegExp.$2); var b = parseInt(RegExp.$3); return "#" + hex(r) + hex(g) + hex(b); } // doesn't match RE?! maybe uses percentages or float numbers // -- FIXME: not yet implemented. return null; } if (v.substr(0, 1) == "#") { // already hex rgb (hopefully :D ) return v; } // if everything else fails ;) return null; }; HTMLArea.prototype._popupDialog = function(url, action, init) { Dialog(this.popupURL(url), action, init); }; // paths HTMLArea.prototype.imgURL = function(file, plugin) { if (typeof plugin == "undefined") return _editor_url + file; else return _editor_url + "plugins/" + plugin + "/img/" + file; }; HTMLArea.prototype.popupURL = function(file) { var url = ""; if (file.match(/^plugin:\/\/(.*?)\/(.*)/)) { var plugin = RegExp.$1; var popup = RegExp.$2; if (!/\.html$/.test(popup)) popup += ".html"; url = _editor_url + "plugins/" + plugin + "/popups/" + popup; } else url = _editor_url + this.config.popupURL + file; return url; }; /** * FIX: Internet Explorer returns an item having the _name_ equal to the given * id, even if it's not having any id. This way it can return a different form * field even if it's not a textarea. This workarounds the problem by * specifically looking to search only elements having a certain tag name. */ HTMLArea.getElementById = function(tag, id) { var el, i, objs = document.getElementsByTagName(tag); for (i = objs.length; --i >= 0 && (el = objs[i]);) if (el.id == id) return el; return null; }; // Modified version of GetHtml plugin's indent. HTMLArea.indent = function(s, sindentChar) { var c = [ /*0*/ new RegExp().compile(/<\/?(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|br|hr|img|embed|param|pre|script|html|head|body|meta|link|title|area)[^>]*>/g), /*1*/ new RegExp().compile(/<\/(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|html|head|body|script)( [^>]*)?>/g),//blocklevel closing tag /*2*/ new RegExp().compile(/<(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|html|head|body|script)( [^>]*)?>/g),//blocklevel opening tag /*3*/ new RegExp().compile(/<(br|hr|img|embed|param|pre|meta|link|title|area)[^>]*>/g),//singlet tag /*4*/ new RegExp().compile(/(^|<\/(pre|script)>)(\s|[^\s])*?(<(pre|script)[^>]*>|$)/g),//find content NOT inside pre and script tags /*5*/ new RegExp().compile(/(<pre[^>]*>)(\s|[^\s])*?(<\/pre>)/g),//find content inside pre tags /*6*/ new RegExp().compile(/(^|<!--(\s|\S)*?-->)((\s|\S)*?)(?=<!--(\s|\S)*?-->|$)/g),//find content NOT inside comments /*7*/ new RegExp().compile(/<\/(table|tbody|tr|td|th|ul|ol|object|html|head|body)( [^>]*)?>/g),//blocklevel closing tag ]; HTMLArea.__nindent = 0; HTMLArea.__sindent = ""; HTMLArea.__sindentChar = (typeof sindentChar == "undefined") ? " " : sindentChar; if(HTMLArea.is_gecko) { //moz changes returns into <br> inside <pre> tags s = s.replace(c[5], function(str){return str.replace(/<br \/>/g,"\n")}); } s = s.replace(c[4], function(strn) { //skip pre and script tags strn = strn.replace(c[6], function(st,$1,$2,$3) { //exclude comments string = $3.replace(/[\n\r]/gi, " ").replace(/\s+/gi," ").replace(c[0], function(str) { if (str.match(c[2])) { var s = "\n" + HTMLArea.__sindent + str; // blocklevel openingtag - increase indent HTMLArea.__sindent += HTMLArea.__sindentChar; ++HTMLArea.__nindent; return s; } else if (str.match(c[1])) { // blocklevel closingtag - decrease indent --HTMLArea.__nindent; HTMLArea.__sindent = ""; for (var i=HTMLArea.__nindent;i>0;--i) { HTMLArea.__sindent += HTMLArea.__sindentChar; } return (str.match(c[7]) ? "\n" + HTMLArea.__sindent : "") + str; } return str; // this won't actually happen }); return $1 + string; });return strn; }); if (s.charAt(0) == "\n") { return s.substring(1, s.length); } s = s.replace(/ *\n/g,'\n');//strip spaces at end of lines return s; };
// I18N constants // LANG: "en", ENCODING: UTF-8 | ISO-8859-1 // Author: Mihai Bazon, <[email protected]> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) HTMLArea.I18N = { // the following should be the filename without .js extension // it will be used for automatically load plugin language. lang: "en", tooltips: { bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strikethrough", subscript: "Subscript", superscript: "Superscript", justifyleft: "Justify Left", justifycenter: "Justify Center", justifyright: "Justify Right", justifyfull: "Justify Full", insertorderedlist: "Ordered List", insertunorderedlist: "Bulleted List", outdent: "Decrease Indent", indent: "Increase Indent", forecolor: "Font Color", hilitecolor: "Background Color", inserthorizontalrule: "Horizontal Rule", createanchor: "Create anchor", createlink: "Insert Web Link", unlink: "Remove link", nolink: "Prevent automatic linking", insertimage: "Insert Image", inserttable: "Insert Table", htmlmode: "Toggle HTML Source", popupeditor: "Enlarge Editor", about: "About this editor", showhelp: "Help using editor", textindicator: "Current style", undo: "Undo your last action", redo: "Redo your last action", cut: "Cut selection", copy: "Copy selection", paste: "Paste from clipboard", insertsmile: "Insert Smiley", insertchar: "Insert Special Character", search_replace: "Search and replace", clean: "Clean Word HTML", lefttoright: "Direction from left to right", righttoleft: "Direction from right to left" }, buttons: { "ok": "OK", "cancel": "Cancel", "browse": "Browse" }, msg: { "Path": "Path", "TEXT_MODE": "You are in TEXT MODE. Use the [<>] button to go back to WYSIWYG MODE." } };